summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/generic
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2015-03-14 23:02:20 +0000
committerKarl Berry <karl@freefriends.org>2015-03-14 23:02:20 +0000
commit1b0fc82b597aca3a7eefc79b4b1079629acbce5e (patch)
tree8193d5afad178169d56187475ecd965cee97a15a /Master/texmf-dist/source/generic
parentf8c8d56f3bc874b6b3b0c381a195755dc2db5dad (diff)
etoc (14mar15)
git-svn-id: svn://tug.org/texlive/trunk@36516 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/generic')
-rw-r--r--Master/texmf-dist/source/generic/etoc/etoc.dtx11920
-rw-r--r--Master/texmf-dist/source/generic/etoc/etoc.ins77
2 files changed, 0 insertions, 11997 deletions
diff --git a/Master/texmf-dist/source/generic/etoc/etoc.dtx b/Master/texmf-dist/source/generic/etoc/etoc.dtx
deleted file mode 100644
index 12bb38b9730..00000000000
--- a/Master/texmf-dist/source/generic/etoc/etoc.dtx
+++ /dev/null
@@ -1,11920 +0,0 @@
-% -*- coding: utf-8; -*-
-%<*none>
-{\def\doctimestamp {Time-stamp: <10-03-2015 22:45:02 CET>}%
- \def\getdtxtimestamp #1 <#2 #3 #4>{#2 at #3 #4}%
- \xdef\etocdtxtimestamp {\expandafter\getdtxtimestamp\doctimestamp }}%
-%</none>
-%<*!readme>
-%%
-%% Package: etoc
-%% Version: 1.08 (2015/03/10)
-%% License: LPPL 1.3c or later (see etoc.dtx)
-%% Copyright (C) 2012-2015 Jean-Francois Burnol <jfbu at free dot fr>
-%% Copyright (C) 2014-2015 Christine Roemer <Christine_Roemer at t-online dot de>
-%% and collaborators for the translation into German of the documentation
-%%
-%</!readme>
-%<*insfile>
-\def\etocpkgdate {2015/03/10}
-\def\etocdocdate {2015/03/10}
-\def\etocpkgversion {v1.08}
-\def\etocpkgdescription {Completely customisable TOCs (jfB)}
-%</insfile>
-%<*none>
-% Now the date and version which are specific to the German translation.
-% Replace \let by suitable \def's in case this lags behing English version.
-\let\etocDEpkgdate \etocpkgdate %
-\let\etocDEdocdate \etocdocdate %
-\let\etocDEpkgversion\etocpkgversion %
-% Definition of \etocLicense
-% --------------------------
-\begingroup
- \long\def\firstofone #1{#1}\catcode1=14\catcode2=0
- \catcode`\%=12\catcode`\_=12\endlinechar13\catcode13=13 ^^A
- \catcode32=13\catcode`\\=12^^Brelax^^A
-^^Bfirstofone{^^Bendgroup^^Bdef^^BetocLicense^^A
-{% Package: etoc
-% Version: 1.08 (2015/03/10)
-% License: LPPL 1.3c or later
-% Copyright (C) 2012-2015 Jean-Francois Burnol <jfbu at free dot fr>
-% Copyright (C) 2014-2015 Christine Roemer <Christine_Roemer at t-online dot de>
-% and collaborators for the translation into German of the documentation
-%
-% This Work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either
-% version 1.3c of this license or (at your option) any later
-% version. This version of this license is in
-% http://www.latex-project.org/lppl/lppl-1-3c.txt
-% and the latest version of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of
-% LaTeX version 2005/12/01 or later.
-%
-% The Authors of this Work are:
-% Jean-Francois Burnol <jfbu at free dot fr> for the source code and
-% English documentation, and
-% Christine Roemer <Christine_Roemer at t-online dot de> and collaborators
-% for the translation into German of the documentation.
-%
-% This Work consists of the main source file etoc.dtx and the derived
-% files etoc.sty, etoc.ins, etoc.tex, etoc-DE.tex, etoc.pdf, etoc-DE.pdf,
-% etoc.dvi, etoc-DE.dvi, README.md.
-%
-% Running tex or etex on etoc.dtx extracts etoc.sty, etoc.ins, etoc.etex,
-% etoc-DE.tex, and README.md. See README.md for further instructions.
-%
-% It is also possible to typeset etoc.dtx directly via latex or pdflatex.
-}}%
-\iffalse
-%</none>
-%<readme>% README
-%<readme>% etoc 1.08
-%<readme>% 2015/03/10
-%<*readme>
-
- Source: etoc.dtx (v1.08 2015/03/10)
- Author: Jean-Francois Burnol
- Author for German tranlation: Christine Roemer
- Info: Completely customisable TOCs
- License: LPPL 1.3c or later
-
-Copyright (C) 2012-2015 Jean-Francois Burnol <jfbu at free dot fr>
-
-Copyright (C) 2014-2015 Christine Roemer <Christine_Roemer at t-online dot de>
- and collaborators for the translation into German of the documentation.
-
-
-ABSTRACT
-========
-
->
- The etoc package gives to the user complete control on how
- the entries of the table of contents should be constituted
- from the *name*, *number*, and *page number* of each
- sectioning unit. This goes via the definition of *line
- styles* for each sectioning level used in the document. The
- package provides its own custom line styles. Simpler ones
- are given as examples in the documentation. The simplest
- usage will be to take advantage of the layout facilities of
- packages dealing with list environments.
->
- Regarding the *global toc display*, etoc provides
- pre-defined styles based on a multi-column format, with,
- optionally, a ruled title or framed contents.
->
- The `\tableofcontents` command may be used arbitrarily many
- times and it has a variant `\localtableofcontents` which
- prints tables of contents 'local' to the current surrounding
- document unit. An extension of the `\label/\ref` syntax allows
- to reproduce (with another layout) a local table of contents
- defined somewhere else in the document.
->
- Via ''depth tags'', one gets an even finer control for each
- table of contents of which sectioning units it should, or
- not, display.
->
- The formatting inherited (and possibly customized by other
- packages) from the document class will be used when in
- compatibility mode.
->
- The assignment of levels to the sectioning units can be
- changed at any time, and etoc can thus be used in a quite
- general manner to create custom ''lists of'', additionally
- to the tables of contents related to the document sectioning
- units. No auxiliary file is used additionally to the
- standard .toc file.
-
-
-INSTALLATION
-============
-
-The simplest is to download
-
-> <http://mirrors.ctan.org/install/macros/latex/contrib/etoc.tds.zip>
-
-and then run `unzip etoc.tds.zip -d <DEST>` where `<DEST>` is a
-TDS-compliant repertory.
-
-Else, to extract the package (.sty) and driver (.tex) files from etoc.dtx:
-
- - if etoc.ins is present: etex etoc.ins (or tex etoc.ins)
- - without etoc.ins: etex etoc.dtx (or tex etoc.dtx)
-
-It is also possible to run latex or pdflatex directly on etoc.dtx.
-
-At least three ways to produce etoc.pdf (method (3) is preferred):
-
-(1) latex etoc.dtx (three times), then dvips, then ps2pdf
-
-(2) pdflatex etoc.dtx (three times)
-
-(3) latex etoc.tex (three times), then dvipdfmx
-
-Method (3) produces the smallest pdf files.
-Options can be set in etoc.tex:
- - scrdoc class options (paper size, font size, ...)
- - with or without source code,
- - with dvipdfmx or with latex+dvips or pdflatex.
-
-To produce etoc-DE.pdf (German documentation) run tex on etoc.ins
-or etoc.dtx to produce etoc-DE.tex, then compile etoc-DE.tex with
-latex (thrice) then dvipdmx, or set first to 0 \Withdvipdfmx in
-etoc-DE.tex to allow compilation with pdflatex.
-
-Um etoc-DE.pdf zu erzeugen ist latex dreimal mit etoc-DE.tex laufen
-zu lassen, dann dvipdfmx mit etoc-DE.dvi. Im Falle von Problemen
-mit dvipdfmx ist \Withdvidpdfmx auf 0 in etoc-DE.tex zu setzen,
-dann ist pdflatex dreimal mit etoc-DE.tex laufen zu lassen.
-
-Installation:
-
- etoc.sty -> TDS:tex/latex/etoc/etoc.sty
- etoc.dtx -> TDS:source/latex/etoc/etoc.dtx
- etoc.pdf -> TDS:doc/latex/etoc/etoc.pdf
- etoc-DE.pdf -> TDS:doc/latex/etoc/etoc-DE.pdf
- README.md -> TDS:doc/latex/etoc/README.md
-
-The other files may be discarded.
-
-LICENSE
-=======
-
->
- This Work may be distributed and/or modified under the
- conditions of the LaTeX Project Public License, either
- version 1.3c of this license or (at your option) any later
- version. This version of this license is in
-<http://www.latex-project.org/lppl/lppl-1-3c.txt>
->
- and the latest version of this license is in
-<http://www.latex-project.org/lppl.txt>
->
- and version 1.3 or later is part of all distributions of
- LaTeX version 2005/12/01 or later.
-
-The Authors of this Work are:
-
-- Jean-Francois Burnol <jfbu at free dot fr> for the source code and
- English documentation, and
-- Christine Roemer <Christine_Roemer at t-online dot de> and collaborators
- for the translation into German of the documentation.
-
->
- This Work consists of the main source file etoc.dtx and the
- derived files etoc.sty, etoc.ins, etoc.tex, etoc-DE.tex,
- etoc.pdf, etoc-DE.pdf, etoc.dvi, etoc-DE.dvi.
-
-RECENT CHANGES
-==============
-
-v1.08 [2015/03/10]
-
-> `\etocskipfirstprefix` may now appear anywhere in the <start>
- part of a level style.
-
-> New commands `\etociffirst`, `\etocxiffirst`, `\etocxifnumbered`.
-
-> It is now possible to issue line style specifications directly
- with `&` and `\\` tokens, in order to typeset a TOC as a tabular
- or longtable with the opening for example in the first
- argument of `\etocsettocstyle` and the closing in its second
- argument.
-
-> It is mandatory for such uses to issue `\etocglobaldefs` which
- tells etoc to proceed globally for certain definitions. This
- is also useful in the context of the inline environments of
- package enumitem.
-
-> On this occasion, various old parts of the code have been
- improved.
-
-v1.07n [2015/03/05]
-
-> No more use of `\toks@` when etoc constructs `\etocthelinkedname` etc...
- Thus `\toks@` can be put in the line styles in order to accumulate
- information. Only useful if it is certain nothing else will change
- `\toks@` either.
-
-> In the documentation: list of main commands now in alphabetic order.
-
-v1.07m [2015/01/23]
-
-> Reading of .toc file is delayed to `\begin{document}` to account for
- possible Babel active characters used therein. Thanks to Denis
- Bitouzé who reported a Babel related problem.
-
-> Improved global toc display emulation under KOMA-script classes.
-
-> New command `\etocbeforetitlehook`. New command `\etocdisplay`.
-
-v1.07l [doc of 2014/04/29]
-
-> Added to the documentation an example of use of `\etocthelinkedname`
- together with an enumitem inline itemize\* environment; moved main TOC
- to immediately after the title, and license to the first pages.
-
-> Incorporation of the translation into German done on the initiative
- of Christine Römer by Felix Baral-Weber, Jenny Rothkrämer-Vogt,
- Daniel Büttner, Claudia Dahl, Christian Otto and Christine Römer (FSU
- Jena). My grateful thanks to all!
-
-%</readme>
-%<*tex>-------------------------------------------------------------------------
-%% run latex thrice on this file etoc.tex then dvipdfmx on etoc.dvi
-%% to produce the documentation etoc.pdf, with source code included.
-%%
-%% possible dvipdfmx warnings (due to hyperlinks extending over page
-%% breaks) may be ignored, but in case of a too old dvipdfmx, it may
-%% be preferable to use pdflatex. Set \Withdvipdfmx to 0 first.
-%%
-\chardef\Withdvipdfmx 1 % replace 1 by 0 for using latex+dvips or pdflatex
-\chardef\NoSourceCode 0 % replace 0 by 1 for the doc *without* the source code
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesFile {etoc.tex}[Driver for etoc documentation]%
-\PassOptionsToClass {a4paper,fontsize=11pt,twoside}{scrdoc}
-\PassOptionsToPackage {ngerman,english}{babel}
-\chardef\ForEnglish 1 % (can NOT be both 1..)
-\chardef\ForDeutsch 0 %
-\input etoc.dtx
-%%% Local Variables:
-%%% mode: latex
-%%% End:
-%</tex>-------------------------------------------------------------------------
-%<*DEtex>-----------------------------------------------------------------------
-%% run latex thrice on this file etoc-DE.tex then dvipdfmx on etoc-DE.dvi
-%% to produce the German documentation etoc-DE.pdf (without source code).
-%%
-%% possible dvipdfmx warnings (due to hyperlinks extending over page
-%% breaks) may be ignored, but in case of a too old dvipdfmx, it may
-%% be preferable to use pdflatex. For this set \Withdvipdfmx to 0.
-%%
-%% Um etoc-DE.pdf zu erzeugen ist latex dreimal mit etoc-DE.tex laufen
-%% zu lassen, dann dvipdfmx mit etoc-DE.dvi. Im Falle von Problemen
-%% mit dvipdfmx ist \Withdvidpdfmx auf 0 zu setzen, dann ist pdflatex
-%% dreimal mit etoc-DE.tex laufen zu lassen.
-%%
-\chardef\Withdvipdfmx 1 % replace 1 by 0 for using latex+dvips or pdflatex
-\chardef\NoSourceCode 1 % replace 1 by 0 for the doc *with* the source code
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesFile {etoc-DE.tex}[Driver for etoc German documentation]%
-\PassOptionsToClass {a4paper,fontsize=11pt,twoside,ngerman}{scrdoc}
-\PassOptionsToPackage {english,ngerman}{babel}
-\chardef\ForEnglish 0 % (can NOT be both 1..)
-\chardef\ForDeutsch 1 %
-\input etoc.dtx
-%%% Local Variables:
-%%% mode: latex
-%%% End:
-%</DEtex>-----------------------------------------------------------------------
-%<*insfile>---------------------------------------------------------------------
-%% Run tex on this file to extract from etoc.dtx:
-%% etoc.sty, etoc.tex, etoc-DE.tex and README.md
-%%
-%% At least three ways to produce etoc.pdf (method (3) is preferred):
-%% (1) latex etoc.dtx (three times), then dvips, then ps2pdf
-%% (2) pdflatex etoc.dtx (three times)
-%% (3) latex etoc.tex (three times), then dvipdfmx
-%%
-%% Method (3) produces the smallest pdf files.
-%% Options can be set in etoc.tex (and etoc-DE.tex):
-%% - scrdoc class options (paper size, font size, ...)
-%% - with or without source code,
-%% - with dvipdfmx or with latex/pdflatex.
-%%
-%% To produce the German documentation etoc-DE.pdf run tex on etoc.ins
-%% or etoc.dtx to produce etoc-DE.tex, then compile etoc-DE.tex with
-%% latex (thrice) then dvipdmx, or edit the suitable toggle in
-%% etoc-DE.tex to allow compilation to proceed with pdflatex.
-%%
-%% Um etoc-DE.pdf zu erzeugen ist latex dreimal mit etoc-DE.tex laufen
-%% zu lassen, dann dvipdfmx mit etoc-DE.dvi. Im Falle von Problemen
-%% mit dvipdfmx ist \Withdvidpdfmx auf 0 in etoc-DE.tex zu setzen,
-%% dann ist pdflatex dreimal mit etoc-DE.tex laufen zu lassen.
-%%
-%% Installation:
-%%
-%% etoc.sty -> TDS:tex/latex/etoc/etoc.sty
-%% etoc.dtx -> TDS:source/latex/etoc/etoc.dtx
-%% etoc.pdf -> TDS:doc/latex/etoc/etoc.pdf
-%% etoc-DE.pdf -> TDS:doc/latex/etoc/etoc-DE.pdf
-%% README.md -> TDS:doc/latex/etoc/README.md
-%%
-\input docstrip.tex
-\askforoverwritefalse
-\def\etocpkgpreamble{\defaultpreamble^^J\MetaPrefix^^J%
-\string\NeedsTeXFormat{LaTeX2e}^^J%
-\string\ProvidesPackage{etoc}^^J%
-\space[\etocpkgdate\space\etocpkgversion\space\etocpkgdescription]}%
-\generate{\nopreamble\nopostamble
-\file{README.md}{\from{etoc.dtx}{readme}}%
-\usepostamble\defaultpostamble
-\file{etoc.tex}{\from{etoc.dtx}{tex}}%
-\file{etoc-DE.tex}{\from{etoc.dtx}{DEtex}}%
-\usepreamble\etocpkgpreamble
-\file{etoc.sty}{\from{etoc.dtx}{package}}}%
-\catcode32=13\relax% active space
-\let =\space%
-\Msg{************************************************************************}
-\Msg{*}
-\Msg{* To finish the installation you have to move the following}
-\Msg{* file into a directory searched by TeX:}
-\Msg{*}
-\Msg{* etoc.sty}
-\Msg{*}
-\Msg{* To produce the documentation run latex thrice on file etoc.tex}
-\Msg{* (or etoc-DE.tex) and then run dvipdfmx on file etoc.dvi, resp.}
-\Msg{* etoc-DE.dvi}
-\Msg{*}
-\Msg{* Happy TeXing!}
-\Msg{*}
-\Msg{************************************************************************}
-\endbatchfile
-%</insfile>---------------------------------------------------------------------
-%<*none>------------------------------------------------------------------------
-\fi
-%
-\chardef\noetex 0
-\expandafter\ifx\csname numexpr\endcsname\relax \chardef\noetex 1 \fi
-\ifnum\noetex=1 \chardef\extractfiles 0 % extract files, then stop
-\else
-% \ifdefined does not count as \if with Knuth tex !
-% no way to use it or \ifcsname here ! (besides hiding it in macros)
- \expandafter\ifx\csname ProvidesFile\endcsname\relax
- \chardef\extractfiles 0 % etex etc.. on etoc.dtx
- \else % latex/pdflatex on etoc.tex or on etoc.dtx
- \ProvidesFile{etoc.dtx}%
- [`etoc' source and documentation (\etocdtxtimestamp)]%
- \expandafter\ifx\csname Withdvipdfmx\endcsname\relax
- % latex run is on etoc.dtx
- \chardef\extractfiles 1 % 1 = extract files and typeset manual
- \chardef\Withdvipdfmx 0 % 0 = pdflatex or latex+dvips
- \chardef\NoSourceCode 1 % do not include source code
- \chardef\ForEnglish 1 \chardef\ForDeutsch 0
- \PassOptionsToClass {a4paper,fontsize=11pt,twoside}{scrdoc}%
- \PassOptionsToPackage {ngerman,english}{babel}%
- \else % latex run is on etoc.tex or etoc-DE.tex
- \chardef\extractfiles 2 % do not extract files
- \fi
- \fi
-\fi
-\ifnum\extractfiles<2 % extract files
-\def\MessageDeFin{\newlinechar10 \let\Msg\message
-\Msg{********************************************************************^^J}%
-\Msg{*^^J}%
-\Msg{* To finish the installation you have to move the following^^J}%
-\Msg{* file into a directory searched by TeX:^^J}%
-\Msg{*^^J}%
-\Msg{*\space\space\space\space etoc.sty^^J}%
-\Msg{*^^J}%
-\Msg{* To produce the documentation with source code included run latex^^J}%
-\Msg{* thrice on file etoc.tex and then dvipdfmx on etoc.dvi^^J}%
-\Msg{*^^J}%
-\Msg{* To produce the German documentation run latex thrice on file^^J}%
-\Msg{* etoc-DE.tex and then dvipdfmx on etoc-DE.dvi^^J}%
-\Msg{*^^J}%
-\Msg{* Happy TeXing!^^J}%
-\Msg{*^^J}%
-\Msg{********************************************************************^^J}%
-}%
-\begingroup
- \input docstrip.tex
- \askforoverwritefalse
- \def\etocpkgpreamble{\defaultpreamble^^J\MetaPrefix^^J%
- \string\NeedsTeXFormat{LaTeX2e}^^J%
- \string\ProvidesPackage{etoc}^^J%
- \space[\etocpkgdate\space\etocpkgversion\space\etocpkgdescription]}%
- \generate{\nopreamble\nopostamble
- \file{README.md}{\from{etoc.dtx}{readme}}%
- \usepostamble\defaultpostamble
- \file{etoc.ins}{\from{etoc.dtx}{insfile}}%
- \file{etoc.tex}{\from{etoc.dtx}{tex}}%
- \file{etoc-DE.tex}{\from{etoc.dtx}{DEtex}}%
- \usepreamble\etocpkgpreamble
- \file{etoc.sty}{\from{etoc.dtx}{package}}}%
-\endgroup
-\fi % end of file extraction
-\ifnum\extractfiles=0 % tex/etex/xetex/etc on etoc.dtx, files extracted, stop
- \MessageDeFin\expandafter\end\fi
-% no use of docstrip to extract files if latex run was on etoc.tex
-\ifdefined\MessageDeFin\AtEndDocument{\MessageDeFin}\fi
-%-------------------------------------------------------------------------------
-% START OF USER MANUAL TEX SOURCE
-\documentclass[abstract]{scrdoc}
-
-\ifnum\NoSourceCode=1 \OnlyDescription\fi
-
-\makeatletter
-\ifnum\Withdvipdfmx=1
- \@for\@tempa:=hyperref,bookmark,graphicx,xcolor\do
- {\PassOptionsToPackage{dvipdfmx}\@tempa}
- %
- \PassOptionsToPackage{dvipdfm}{geometry}
- \PassOptionsToPackage{bookmarks=true}{hyperref}
- \PassOptionsToPackage{dvipdfmx-outline-open}{hyperref}
- \PassOptionsToPackage{dvipdfmx-outline-open}{bookmark}
- %
- \def\pgfsysdriver{pgfsys-dvipdfm.def}
-\else
- \PassOptionsToPackage{bookmarks=true}{hyperref}
-\fi
-\makeatother
-
-\usepackage[T1]{fontenc}
-\usepackage[utf8]{inputenc}
-\usepackage[hscale=0.66,vscale=0.75]{geometry}
-\pagestyle{headings}
-
-% January 2014. work-around a bug in KOMA 3.12 (December 2013):
-\makeatletter
-\def\buggysectionmark #1{% KOMA 3.12 as released to CTAN December 2013
- \if@twoside\expandafter\markboth\else\expandafter\markright\fi
- {\MakeMarkcase{\ifnumbered{section}{\sectionmarkformat\fi}{}#1}}{}}
-\ifx\buggysectionmark\sectionmark
-\def\sectionmark #1{%
- \if@twoside\expandafter\markboth\else\expandafter\markright\fi
- {\MakeMarkcase{\ifnumbered{section}{\sectionmarkformat}{}#1}}{}}
-\fi
-\makeatother
-
-\makeatletter
-% 2013/03/07.
-% This macro allows to conveniently center a line inside a paragraph and still
-% use therein \verb or other commands changing catcodes.
-% Note: \centerline in LaTeX still uses \hsize and not \linewidth/\columnwidth
- \def\@centeredline {\hbox to \linewidth
- \bgroup \hss \bgroup
- \aftergroup\centeredline@ }
- \newcommand*\centeredline {%
- \ifhmode
- \\\relax
- \def\centeredline@{\hss\egroup\hskip\z@skip}%
- \else
- \def\centeredline@{\hss\egroup}%
- \fi
- \afterassignment\@centeredline
- \let\next=}
-
-% pour maintenir les % en début de ligne dans les blocs verbatim
-%
-
- \let\original@check@percent\check@percent
- \let\check@percent\relax
-\makeatother
-
-
-% pour les environnements verbatim
-% uniformisé finalement, avec quelques exceptions, pour dtx du 3 déc 2013
-\def\MacroFont{\ttfamily\small\hyphenchar\font45 \baselineskip11pt\relax}
-
-% ATTENTION: (avec doc.sty ou les classes scrdoc ou ltxdoc)
-%
-% - l'environnement macrocode se fait avec \macro@font qui est le
-% \MacroFont du \begin{document}.
-%
-% - les environnements verbatim utilisent le \MacroFont courant.
-%
-% - \verb utilise un \ttfamily !! et non pas \verbatim@font que l'on
-% peut customiser.
-%
-% - (9 mars 2015) il ne faut PAS commencer des macrocode directement après
-% un \section, il faut un paragraphe (par exemple un \indent\par)
-
-%----
-% better \verb pour doc.
-% 12 octobre 2013, importé de xint.dtx
-% je rajoute pour { afin que truc{machin puisse avoir hyphénation
-% retire \leavemmode, pas nécessaire pour emploi ici
-
-% NOTE 9 mars 2015. J'ai depuis une version plus aboutie dans xint.dtx
-% mais je laisse ici tel quel.
-
-\def\MicroFont{\ttfamily\hyphenchar\font45 }
-% modif de \do@noligs: \char`#1} --> \char`#1 }
-\makeatletter
-\def\do@noligs #1%
-{%
- \catcode `#1\active
- \begingroup \lccode `\~=`#1\relax
- \lowercase {\endgroup \def ~{\kern \z@ \char `#1 }}%
-}%
-\def\dobackslash
-{%
- \catcode92 \active
- \begingroup \lccode `\~=92\relax
- \lowercase {\endgroup \def ~{\kern \z@ \char 92 }}%
-}%
-\def\dobraces
-{%
- \catcode123 \active
- \begingroup \lccode `\~=123\relax
- \lowercase {\endgroup \def ~{\hskip \z@\@plus.1pt\@minus.1pt
- \char 123 }}%
- \catcode125 \active
- \begingroup \lccode `\~=125\relax
- \lowercase {\endgroup \def ~{\char 125 \hskip \z@\@plus.1pt\@minus.1pt }}%
-}%
-\def\verb
-{%
- \relax \ifmmode\hbox\else\leavevmode\null\fi
- \bgroup \MicroFont
- \let\do\do@noligs \verbatim@nolig@list
- \let\do\@makeother \dospecials
- \catcode32 10
- \dobackslash \dobraces \makestarlowast
- \@jfverb
-}%
-\def\@jfverb #1{\catcode`#1\active
- \lccode`\~`#1\lowercase{\def~{\egroup\unskip}}}%
-% (\unskip ajouté le 14 octobre)
-% \lowast est défini plus loin
-\begingroup
- \lccode`\~=`\*
-\lowercase{%
-\endgroup
-\def\makestarlowast {\catcode`\*\active\let~\lowast}}%
-\makeatother
-%
-\usepackage{txfonts}
-
-% m'occuper de la taille de txtt:
-% au passage je supprime le \hyphenchar \font\m@ne
-
-% avril 2013
-% ATTENTION ATTENTION ATTENTION Un changement de taille comme \small semble
-% déclencher (peut-être) la relecture de t1txtt.fd et quoi qu'il en soit le
-% \hyphenchar est REMIS à -1 !
-
-% update: 13 octobre 2013
-% et pourtant tailles sont ok, donc au moins cette information est
-% maintenue je ne sais donc pas exactement ce qui se passe.
-
-\DeclareFontFamily{T1}{txtt}{\hyphenchar\font 45\relax}
-\DeclareFontShape{T1}{txtt}{m}{n}{ %medium
- <->s*[.96] t1xtt%
-}{}
-\DeclareFontShape{T1}{txtt}{m}{sc}{ %cap & small cap
- <->s*[.96] t1xttsc%
-}{}
-\DeclareFontShape{T1}{txtt}{m}{sl}{ %slanted
- <->s*[.96] t1xttsl%
-}{}
-\DeclareFontShape{T1}{txtt}{m}{it}{ %italic
- <->ssub * txtt/m/sl%
-}{}
-\DeclareFontShape{T1}{txtt}{m}{ui}{ %unslanted italic
- <->ssub * txtt/m/sl%
-}{}
-\DeclareFontShape{T1}{txtt}{bx}{n}{ %bold extended
- <->t1xbtt%
-}{}
-\DeclareFontShape{T1}{txtt}{bx}{sc}{ %bold extended cap & small cap
- <->t1xbttsc%
-}{}
-\DeclareFontShape{T1}{txtt}{bx}{sl}{ %bold extended slanted
- <->t1xbttsl%
-}{}
-\DeclareFontShape{T1}{txtt}{bx}{it}{ %bold extended italic
- <->ssub * txtt/bx/sl%
-}{}
-\DeclareFontShape{T1}{txtt}{bx}{ui}{ %bold extended unslanted italic
- <->ssub * txtt/bx/sl%
-}{}
-\DeclareFontShape{T1}{txtt}{b}{n}{ %bold
- <->ssub * txtt/bx/n%
-}{}
-\DeclareFontShape{T1}{txtt}{b}{sc}{ %bold cap & small cap
- <->ssub * txtt/bx/sc%
-}{}
-\DeclareFontShape{T1}{txtt}{b}{sl}{ %bold slanted
- <->ssub * txtt/bx/sl%
-}{}
-\DeclareFontShape{T1}{txtt}{b}{it}{ %bold italic
- <->ssub * txtt/bx/it%
-}{}
-\DeclareFontShape{T1}{txtt}{b}{ui}{ %bold unslanted italic
- <->ssub * txtt/bx/ui%
-}{}
-
-\usepackage{xspace}
-\usepackage[dvipsnames]{xcolor}
-\usepackage{graphicx}
-\usepackage[inline]{enumitem}
-\usepackage{array}
-\usepackage{longtable}
-
-\definecolor{joli}{RGB}{225,95,0}
-\definecolor{JOLI}{RGB}{225,95,0}
-\definecolor{BLUE}{RGB}{0,0,255}
-\colorlet{niceone}{green!35!blue!75}
-
-\usepackage {babel} % ngerman and english options have been passed to babel
-\AtBeginDocument {
- \ifnum\ForEnglish=1 \renewcommand\partname{Part}\fi
- \addto\captionsenglish{\renewcommand\partname{Part}}
- \addto\captionsgerman {\renewcommand\partname{Teil}}
-}
-
-\usepackage{tikz}
-\usetikzlibrary{trees} % added for "cyclic" grow function 2013/03/02
-\usepackage{forest} % switched from tikz-qtree to forest 2013/09/09
-% No problem with hyperlinks then, contrarily to tikz-qtree.
-
-% NOTE: (12 octobre 2013)
-% - si compilation pour dvipdfmx, les arbres dans le dvi visualisés par xdvi
-% montrent correctement les textes, mais rien au point de vue graphique,
-% - si compilation pour dvips, l'arbre fait par forest est tout empilé, celui
-% fait par tikz sans forest est presque correct, les labels débordent.
-% Dans les deux cas, le résultat final dans le pdf est bon.
-% grosso modo dans l'état actuel le pdf fait 250K (dvipdfmx), 340K (pdflatex) et
-% 1M pour dvips+ps2pdf.
-
-% 9 octobre 2013, je me décide à ne plus utiliser hidelinks, mais il est tout de
-% même ajouté au .toc
-
-% 18 mai 2014: pdfinfo différent suivant anglais ou allemand
-\ifnum\ForEnglish=1
-\usepackage[pdfencoding=pdfdoc]{hyperref}
-\hypersetup{%
-linktoc=all,% why is the important stuff
-%% bookmarksdepth=3,% in a *hard* to find README?
-%% (but not needeed anymore now, v1.07g)
-breaklinks=true,%
-colorlinks,%
-linkcolor=RoyalBlue,% Orchid
-urlcolor=OliveGreen,%
-pdfauthor={Jean-Fran\c cois Burnol},%
-pdftitle={The etoc package},%
-pdfsubject={Tables of contents with LaTeX},%
-pdfkeywords={LaTeX, table of contents},%
-pdfstartview=FitH,%
-pdfpagemode=UseOutlines}
-\fi
-
-\ifnum\ForDeutsch=1
-\usepackage[pdfencoding=pdfdoc]{hyperref}
-\hypersetup{%
-linktoc=all,%
-breaklinks=true,%
-colorlinks,%
-linkcolor=RoyalBlue,% Orchid
-urlcolor=OliveGreen,%
-pdfauthor={Jean-Fran\c cois Burnol, Christine Römer},%
-pdftitle={Das etoc Paket},%
-pdfsubject={Inhaltsverzeichnisse mit LaTeX},%
-pdfkeywords={LaTeX, Inhaltsverzeichnis},%
-pdfstartview=FitH,%
-pdfpagemode=UseOutlines}
-\fi
-
-% added usage of package bookmark 2013/10/10
-\usepackage{bookmark}
-
-\usepackage{framed}
-\usepackage{varioref}
-
-\usepackage{etoc} % loads multicol
-
-%--------
-% 10 octobre 2013:
-\AtBeginDocument{\addtocontents{toc}{\protect\hypersetup{hidelinks}}}
-% mieux que de passer hidelinks comme option à hyperref.
-% Comme toutes les tocs sont faites dans un groupe, c'est très
-% bien. (et j'utilise \etocaftertitlehook pour autre chose)
-
-%--------
-% add-ons for the new section `surprising uses of etoc' (2013/01/24)
-\newcounter{visibletoc}
-\renewcommand{\etocaftertitlehook}
- {\stepcounter{visibletoc}%
- \phantomsection
- \etoctoccontentsline{visibletoc}{\thevisibletoc}}
-\etocsetlevel{visibletoc}{6}
-%--------
-% add-ons for the `fancy TOC' (2013/01/25)
- \newcounter{dummypart}
- \newcounter{dummychapter}
- \newcounter{dummysection}
- \etocsetlevel{dummypart}{6}
- \etocsetlevel{dummychapter}{6}
- \etocsetlevel{dummysection}{6}
-%--------
-% for "Another compatibility mode" (2013/02/21):
-% attention au 5 qui est hard-coded
-% (pour 1.07f c'était 3, maintenant 5 pour 1.07g; et 4 maintenant pour 1.07h...)
-% (et pour 1.07i.. à nouveau 3 faudra vraiment que je change cela)
-% et maintenant =4 pour version de la doc du 28 avril 2014... faudra vraiment qu
-% je mette un mécanisme plus robuste pour cette TOC.
-\makeatletter
-\newcommand*{\MyQuasiStandardTOC}[1]{%
- \begingroup
- \let\savedsectionline\l@section
- \let\savedsubsectionline\l@subsection
- \etocsetstyle{section}{}
- {\ifnum\etocthenumber=4 % <- check this if new sections added to user manual
- \etocsetstyle{subsection}
- {\par\nopagebreak\begingroup
- \leftskip1.5em \rightskip\@tocrmarg
- \parfillskip \@flushglue
- \parindent 0pt
- \normalfont\normalsize\rmfamily\itshape
- \etocskipfirstprefix}
- {\allowbreak\,--\,}
- {\etocname\ \textup{(\etocnumber)}}
- {.\par\endgroup}%
- \else
- \etocsetstyle{subsection}{}{}
- {\savedsubsectionline{\numberline{\etocnumber}\etocname}{\etocpage}}{}%
- \fi}
- {\savedsectionline
- {\numberline{{\color{cyan}\etocthenumber}}\etocname}{\etocpage}}
- {}%
- \etocstandarddisplaystyle
- \etocsetnexttocdepth {2}%
- \tableofcontents #1
- \endgroup}
-\makeatother
-%--------
-% Statistics on sections and subsections in a part \thispartstats:
-% 2 mars 2013
-% cette version utilise des box, plutôt que des macros.
-% mais on ne peut plus alors changer de police etc...
-
-% 11 octobre 2013, je retire les \color{teal}.
-
-\newsavebox\firstnamei
-\newsavebox\firstnumberi
-\newsavebox\lastnamei
-\newsavebox\lastnumberi
-\newsavebox\firstnameii
-\newsavebox\firstnumberii
-\newsavebox\lastnameii
-\newsavebox\lastnumberii
-\newcounter{mycounti}
-\newcounter{mycountii}
-
-\newcommand*{\thispartstatsauxi}{}
-\newcommand*{\thispartstatsauxii}{}
-\newcommand*{\oldtocdepth}{}
-
-\newcommand*{\thispartstats}{%
- \setcounter{mycounti}{0}%
- \setcounter{mycountii}{0}%
- \def\thispartstatsauxi{%
- \sbox{\firstnamei}{\etocname}%
- \sbox{\firstnumberi}{\etocnumber}%
- \def\thispartstatsauxi{}}%
- \def\thispartstatsauxii{%
- \sbox{\firstnameii}{\etocname}%
- \sbox{\firstnumberii}{\etocnumber}%
- \def\thispartstatsauxii{}}%
- \begingroup
- \etocsetstyle{subsection}
- {}
- {}
- {\thispartstatsauxii
- \stepcounter{mycountii}%
- \sbox{\lastnameii}{\etocname}%
- \sbox{\lastnumberii}{\etocnumber}}
- {}
-\ifnum\ForEnglish=1
- \etocsetstyle{section}
- {}
- {}
- {\thispartstatsauxi
- \stepcounter{mycounti}%
- \sbox{\lastnamei}{\etocname}%
- \sbox{\lastnumberi}{\etocnumber}}
- {Here are some statistics for this part: it contains \arabic{mycounti}
- section\ifnum\value{mycounti}>1 s\fi{} and
- \arabic{mycountii} subsection\ifnum\value{mycountii}>1 s\fi. The name of
- the first section is
- ``\unhbox\firstnamei{}'' and the corresponding number is
- ``\unhbox\firstnumberi''. The name of the last section is
- ``\unhbox\lastnamei{}'' and its number is
- ``\unhbox\lastnumberi''.
- \ifnum\value{mycountii}>0 The name of
- the first subsection is
- ``\unhbox\firstnameii{}'' and the corresponding number is
- ``\unhbox\firstnumberii''. The name of the last subsection is
- ``\unhbox\lastnameii{}'' and its number is
- ``\unhbox\lastnumberii''.\fi }
-\fi
-\ifnum\ForDeutsch=1
- \etocsetstyle{section}
- {}
- {}
- {\thispartstatsauxi
- \stepcounter{mycounti}%
- \sbox{\lastnamei}{\etocname}%
- \sbox{\lastnumberi}{\etocnumber}}
-% Hier wird ein Befehl definiert, der fuer jedes Teil ein paar Fakten sammelt
-% und ausgibt.
- {Zu Beginn wollen wir ein paar Fakten zu diesem Teil nennen. Er enthält
- \arabic{mycounti} Abschnitt\ifnum\value{mycounti}>1 e\fi{} und
- \arabic{mycountii} Unterabschnitt\ifnum\value{mycountii}>1 e\fi. Der Name des ersten
- Abschnitts lautet
- \glqq\unhbox\firstnamei{}\grqq~und er hat die Gliederungsnummer
- \glqq\unhbox\firstnumberi\grqq. Der Name des letzten Abschnitts lautet
- \glqq\unhbox\lastnamei{}\grqq~und er hat die Nummer
- \glqq\unhbox\lastnumberi\grqq.
- \ifnum\value{mycountii}>0 Der erste
- Unterabschnitt heißt
- \glqq\unhbox\firstnameii{}\grqq~und er hat die Nummer
- \glqq\unhbox\firstnumberii\grqq. Der Name des letzten Unterabschnitts ist
- \glqq\unhbox\lastnameii{}\grqq~und dessen Nummer ist
- \glqq\unhbox\lastnumberii\grqq.\fi }%
-\fi
- \etocinline
-% october 10, 2013.
- \etocsetnexttocdepth {2}%
- \etocsettocstyle {\pdfbookmark[1]{Statistics}{\thepart.STATS}}{}
- \localtableofcontents
- \endgroup
-}
-
-
-\newcommand\etoc{%
- \texorpdfstring{{\color{joli}\ttfamily\bfseries etoc}}{etoc}\xspace}
-
-\DeclareRobustCommand\csa [1] {{\ttfamily\hyphenchar\font45 \char`\\ #1}}
-
-\DeclareRobustCommand\csb [1]
- {\hyperref[#1] {\ttfamily\hyphenchar\font45 \char`\\ #1}}
-
-\newcommand\cshyp[1]{\texorpdfstring{\csa{#1}}{\textbackslash #1}}
-
-\newcommand\csbhyp[1]{\texorpdfstring{\csa{#1}}{\textbackslash #1}}
-
-\newcommand\toc{\csa{table\-of\-contents}\xspace}
-\newcommand\localtoc{\csa{local\-table\-of\-contents}\xspace}
-
-\newcommand\lowast{\raisebox{-.25\height}{*}}
-\newcommand\starit[1]{\csa{#1\lowast}}
-\newcommand\staritb[1]{\csb{#1}\lowast}
-
-\hyphenation{toc-depth sec-num-depth con-tents-line}
-\hyphenation{etoc-tan-dard-lines
-etoc-de-fault-lines
-etoc-toc-lines
-etoc-set-style
-etoc-name
-etoc-page
-etoc-skip-first-pre-fix
-etoc-num-ber
-etoc-if-first
-etoc-ifnum-bered
-etoc-the-name
-etoc-the-num-ber
-etoc-the-page
-etoc-link
-etoc-the-linked-name
-etoc-the-linked-num-ber
-etoc-the-linked-page
-etoc-the-link
-etoc-set-level
-etoc-set-toc-depth
-etoc-set-next-toc-depth
-etoc-set-toc-depth
-etoc-obey-toc-toc-depth
-etoc-ig-nor-toc-depth
-etoc-depth-tag
-etoc-set-tag-depth
-etoc-obey-depth-tags
-etoc-ig-nore-depth-tags
-etoc-stan-dard-dis-playstyle
-etoc-set-toc-style
-etoc-mul-ti-col-style
-etoc-mul-ti-col
-etoc-lo-cal-mul-ti-col
-etoc-toc-style
-etoc-toc-style-with-marks
-etoc-toc-style-with-mark-snouc
-etoc-ruled-style
-etoc-ruled
-etoc-lo-cal-ruled
-etoc-framed-style
-etoc-framed
-etoc-lo-cal-framed
-etoc-in-line
-etoc-af-ter-ti-tle-hook
-etoc-af-ter-con-tentshook
-etoc-af-ter-toc-hook
-etoc-skip-first-pre-fix
-etoc-only-on-first}
-
-\hyphenation{
-etoc-font-mi-nus-two
-etoc-font-mi-nus-one
-etoc-font-zero
-etoc-font-one
-etoc-font-two
-etoc-font-three
-etoc-sep-mi-nus-two
-etoc-sep-mi-nus-one
-etoc-sep-zero
-etoc-sep-one
-etoc-sep-two
-etoc-sep-three
-etoc-mi-nus-two-left-mar-gin
-etoc-mi-nus-two-right-mar-gin
-etoc-mi-nus-one-left-mar-gin
-etoc-mi-nus-one-right-mar-gin
-etoc-base-line-spread-mi-nus-two
-etoc-base-line-spread-mi-nus-one
-etoc-base-line-spread-zero
-etoc-base-line-spread-one
-etoc-base-line-spread-two
-etoc-base-line-spread-three
-etoc-toc-line-lead-ers
-etoc-ab-brev-page-name
-etoc-part-name
-etoc-book-name
-etoc-above-toc-skip
-etoc-be-low-toc-skip
-etoc-column-sep
-etoc-mul-ti-col-sep
-etoc-mul-ti-col-pre-tol-er-ance
-etoc-mul-ti-col-tol-er-ance
-etoc-de-fault-nb-col
-etoc-in-ner-top-sep
-etoc-top-rule
-etoc-top-rule-col-or-cmd
-etoc-in-ner-left-sep
-etoc-in-ner-right-sep
-etoc-in-ner-bot-tom-sep
-etoc-left-rule
-etoc-right-rule
-etoc-bot-tom-rule
-etoc-left-rule-col-or-cmd
-etoc-rightrule-col-or-cmd
-etoc-bot-tom-rule-col-or-cmd
-etoc-bkg-col-or-cmd
-etoc-framed-mp-hook}
-
-\hyphenation{next-toc-with-tags}
-\frenchspacing
-
-\renewcommand\familydefault\sfdefault
-
-% for illustration only. Not to be recommended in general.
-\setcounter{secnumdepth}{4}
-
-\ifnum\ForDeutsch=1
- \renewcommand*{\etocabbrevpagename}{S.~}
-\fi
-
-\begin{document}\rmfamily
-\thispagestyle{empty}
-
-%-------------------------------------------------------------------------------
-% THIS IS TO AVOID TEX BEING CONFUSED BY CONDITIONALS IN FALSE BRANCHES
-\catcode1 0
-\catcode92 12
-
-^^Aifnum^^AForEnglish=1
-
- ^^Acatcode92 0
-
-% START ENGLISH VERSION
-\bookmark[named=FirstPage,level=1]{Title page}
-
-\begin{center}
- {\normalfont\Large The \etoc package}\\
- \textsc{Jean-François Burnol}\par
- \footnotesize \ttfamily jfbu (at) free (dot) fr\\
- Package version: \etocpkgversion\ (\etocpkgdate)
- \let\thefootnote\empty
- \footnote{Documentation (\etocdocdate) generated from the source file
- with timestamp ``\etocdtxtimestamp''.}\par
-\end{center}
-\setcounter{footnote}{0}
-
-\etocdepthtag.toc {preamble}
-
-%----
-% MAIN TOC
-%
-\etocsettocdepth {subsubsection}
-\etoctoclines
-\etocmarkboth\contentsname
-\etocmulticolstyle[1]
- {\pdfbookmark[1]{Table of contents}{MAINTOC}%
- \noindent\bfseries\Large
- \leaders\hrule height1pt\hfill
- \MakeUppercase{Table of Contents}}
-
-\begingroup
- \etocsetlevel{subsection}{3}
- \etocsetlevel{subsubsection}{6}
- \tableofcontents \label{toc:main}
-\endgroup
-
-\phantomsection\addcontentsline{toc}{section}{\abstractname}
-\begin{abstract}
- The \etoc package gives to the user complete control on how
- the entries of the table of contents should be constituted
- from the \emph{name}, \emph{number}, and \emph{page number}
- of each sectioning unit. This goes via the definition of
- \emph{line styles} for each sectioning level used in the
- document. The package provides its own custom line styles.
- Simpler ones are given as examples in the documentation. The
- simplest usage will be to take advantage of the layout facilities
- of packages dealing with list environments.
-
- Regarding the \emph{global toc display}, \etoc provides pre-defined styles
- based on a multi-column format, with, optionally, a ruled title or framed
- contents.
-
- The \csa{tableofcontents} command may be used arbitrarily many times and it
- has a variant \csa{localtableofcontents} which prints tables of contents
- `local' to the current surrounding document unit. An extension of the
- \csa{label}/\csa{ref} syntax allows to reproduce (with another layout) a local
- table of contents defined somewhere else in the document.
-
- Via ``depth tags'', one gets an even finer control for each table of contents
- of which sectioning units it should, or not, display.
-
- The formatting inherited (and possibly customized by other
- packages) from the document class will be used when in
- \emph{compatibility mode}.
-
- The assignment of levels to the sectioning units can be changed at any
- time, and \etoc can thus be used in a quite general manner to
- create custom ``lists of'', additionally to the tables of contents
- related to the document sectioning units. No auxiliary file is used
- additionally to the standard |.toc| file.
-\end{abstract}
-
-\section{Foreword}
-
-Popular packages dealing with TOCs include |tocloft|, |titletoc|
-and |minitoc|. Why another one? I started \etoc
-for my own use, and found out only later about these mentioned
-packages.
-
-As is well explained in the |tocloft| package documentation,
-the standard \LaTeX{} layout for the Table of Contents is
-buried in the class definitions. In particular, most of the
-lengths therein are hardcoded, and the only way for the user
-to change them is to recopy the class definitions into the
-document and then change them to obtain what is desired
-(within suitable \csa{makeatletter} and \csa{makeatother}).
-The more reasonable alternative is to use a dedicated package such as
-|tocloft| or to use another flexible document class.
-
-However, although now things are hopefully not hard-coded, one
-still has to go through the package or class interface. This
-means one has to memorize a (possibly large) number of macros
-which will serve only to this task, and one will always be
-constrained to customizing one initially given layout.
-
-The spirit of \etoc is something else. The user will deal with
-the \emph{name}, the \emph{number} and the \emph{page number}
-corresponding to each document sectional division (and
-found in a line of the |.toc| file) in a completely arbitrary
-manner: they are made available via the \csb{etocname},
-\csb{etocnumber}, and \csb{etocpage} commands.
-
-\etoc appears to be (at least partially) compatible with the
-|article|, |book|, |report|, |scrartcl|, |scrbook|, |scrreprt| and
-|memoir| classes. Starting with release |1.07k| it is possible to
-use \etoc concurrently with package |tocloft|.
-
-\section{License}
-
-\begingroup\ttfamily\small\hyphenchar\font -1
- \parindent0pt
- \obeyspaces\obeylines %
-\etocLicense\endgroup
-
-
-\clearpage
-
-\etocsettocdepth {subsection}
-
-\etocdepthtag.toc{overview}
-
-\part{Overview}\label{part:overview}
-
-\thispartstats
-
-\invisiblelocaltableofcontents \label{toc:overview}
-
-\section{Do I need to be a geek to use \etoc?}
-
-Not quite. The simplest way is to use |enumerate| environments,
-with the customizing facilities of packages such as
-|enumitem|,\footnote{\url{http://ctan.org/pkg/enumitem}} to
-display the data fetched by \etoc from the |.toc| file. The data
-consists of the \emph{name} (\csb{etocname}), \emph{number}
-(\csb{etocnumber}), and \emph{page number} (\csb{etocpage}) as
-extracted
-% \footnote{although \LaTeX{} has been promoted as
-% separating contents from form, there are some areas where its
-% real implementation is very far from this ideal. And the |.toc|
-% file is a case in point; not to mention the hard-coded
-% dimensions, with use of the @ sign,
-% in the macros responsible for constructing the typeset table of
-% contents.}
-from the |.toc| file.
-
-This is
-illustrated \hyperref[toc:a]{at the start} of
-\autoref{part:linestyles}. More
-sophisticated examples would use more sophisticated |enumitem|
-options. One may say then that again the user has to memorize some
-customizing! indeed, but the syntax and option names to memorize
-are in no way related only to matters of tables of contents, hence
-an economy of use of the poor brain.
-
-% People who
-% know the internals of \LaTeX2e well (which is not my case) could
-% happily use directly a |\list| command;
-
-Next in ease of use, perhaps, is the method explained
-\hyperref[sec:firstexample]{later in this part} (\autoref{sec:firstexample}).
-For this some knowledge of |\leftskip|, |\rightskip|, etc... is necessary. And a
-slight elaboration of this method, whose code is to be found in
-\autoref{ssec:tocwithdepthtags}, allows to mimick very well, if so desired, the
-standard looks.
-
-As will be amply illustrated in this manual, \etoc is quite
-versatile (especially as it allows to re-define at any point in
-the document the hierarchy of sectioning units) and one can
-achieve surprising effects with it: \autoref{part:surprising} is
-devoted to this, and some more is to be found in
-\autoref{part:tipsandtricks}.
-
-\begin{framed}
-\setcounter{mycounti}{0}%
- \etocinline
-\etocsetlevel{part}{1}
-\etocsetlevel{chapter}{1}
-\etocsetlevel{visibletoc}{0}
-\etocsetstyle{visibletoc}
- {}
- {\stepcounter{mycounti}}
- {}
- {}
-\etocsettocstyle{}{}
-\etocsetnexttocdepth{0}
-\tableofcontents
-A very important aspect of \etoc is that it is geared towards making many TOCs
-in the same document, \emph{using only one |.toc| file}! The present
-documentation contains \arabic{mycounti} visible tables of contents (and a few
-invisible ones) and uses only one |.toc| file!\footnotemark{} So one should
-think
-twice before adding manually extra commands to the |.toc| file (see
-\autoref{sec:addingtotoc}).
-\end{framed}
-
-\footnotetext{and the counting itself has been achieved by a table of contents
- which was inserted in the framed paragraph! \dots the technique for this kind
- of effect will be explained later.}
-
-
-\subsection{Limitations in the use of list environments for
- tables of contents}
-\label{ssec:limitations}
-
-There are some limitations to the use of list environments
-for typesetting TOCs. One of them is intrinsic to the scope
-limitations created by the groups associated to the
-environments: the |.toc| file
-may contain, besides the information to be typeset in the
-TOCs, some other commands, such as language changing
-commands, which do not expect to see their scope limited in
-this way inside a group (\LaTeX's environments create groups).
-
-Therefore the built-in ``line styles'' proposed by \etoc as an example (and
-which are illustrated\footnote{with a twist, subsections having been downgraded
- to the subsubsection style\dots} by the \hyperref[toc:main]{main table of
- contents} in this document) do not make use of environments. Actually, in this
-user manual, only the \hyperref[toc:a]{table of contents} at the start of
-\autoref{part:linestyles} and the \autoref{toc:allsubsections} (which is a TOC!)
-have their line styles expressed in terms of enumerate environments.
-
-\section{Line styles and toc display style}
-
-A distinction shall be made between the \emph{line styles},
-\emph{i.e.} the way the name, number and page numbers are
-used at each level, and the \emph{toc display style} (for
-lack of a better name) which tells how the title should be
-set, whether an entry in the |.toc| file should be made,
-whether the contents should be typeset with multiple columns,
-etc... the latter is governed by the command
-\csa{etocsettocstyle} (or some higher-level commands) and the
-former by the command \csa{etocsetstyle}.
-
-
-\subsection{\csbhyp{etocsetstyle} for the line styles}
-
-The command to inform \etoc of what to do with \csa{etocname}, \csa{etocnumber},
-and \csa{etocpage} is called \csb{etocsetstyle}. It has five mandatory
-arguments. The first one is the name of the sectional unit: a priori known names
-are |book|, |part|, |chapter|, |section|, |subsection|, |subsubsection|,
-|paragraph|, and |subparagraph|, and any other name can be declared and assigned
-to a (numeric) level via the \csb{etocsetlevel} command.\footnote{under the
- \texttt{memoir} class, \etoc knows \texttt{appendix} as a sectioning
- name.}
-
-The four other arguments of \csb{etocsetstyle} specify: 1) \emph{what to do when
- this level is first encountered, down from a more general one,} then 2) \& 3)
-(two arguments, a `prefix' and a `contents') \emph{what to do when a new entry
- of that type is found,} and 4) \emph{the last argument is the code to execute
- when a division unit of higher importance is again hit upon.}
-
-\subsection{\csbhyp{etocsettocstyle} for the toc display}
-
-The \csb{etocsettocstyle} command allows to specify what
-should be done before and after the line entries of the TOC
-are typeset, and in particular how the title should be
-printed. It has two arguments, the first one is executed
-before the TOC contents (typically it will print
-``Contents'' and define suitable marks for the page headings) and
-the second is executed after the TOC contents.
-
-\etoc provides four (customizable) higher level toc styles:
-\csb{etocmulticolstyle}, \csb{etoctocstyle},
-\csb{etocruledstyle}, and \csb{etocframedstyle}. All use the
-|multicol| package with a default of two columns
-(single-column mode is obtained with the optional argument |[1]|).
-
-These commands must be followed either by \toc or \localtoc.
-
-\subsection{Compatibility mode}\label{ssub:compat}
-\label{etoctoclines}
-\label{etocstandardlines}
-
-Both for the ``line styles'' and the ``toc display style'', it is
-possible to switch into a compatibility mode which uses the
-defaults from the
-document class.\footnote{for the ``toc display style''
- \etoc checks if it knows the class, and if not defaults to
- the |article| class layout. It will also check if
- \texttt{tocloft} has customized the TOC title.}
-This is activated by:\\
-\makebox[5.2cm][l]{\csb{etocstandardlines}}
- |% `line entries' as without \usepackage{etoc}|\\
-\makebox[5.2cm][l]{\csb{etocstandarddisplaystyle}}
- |% `toc display' as without \usepackage{etoc}|
-
-
-If the command \csa{etocsetstyle} has \emph{not been used in the
-preamble} the package will be at |\begin{document}| in this
- compatibility mode: hence just adding \csa{usepackage\{etoc\}}
- should hopefully not change anything to the look of a
- previously existing document, under the |article|, |book|,
- |report|, |scrartcl|, |scrbook|, |scrreprt| and |memoir|
- classes.
-
- Any use of \csa{etocsetstyle} in the \emph{preamble or body} of
- the document turns off from that point on the compatibility mode
- for line styles, but maintains the compatibility mode for the
- TOC title. One re-activates the compatibility mode for line
- styles with \csb{etocstandardlines}; and
- \csb{etoctoclines} will re-activate the line styles as defined
- with the help of \csa{etocsetstyle}, if their scope was not
- limited to a group or environment.
-
- The command \csb{etocdefaultlines} resets the line styles as
- pre-defined internally by \etoc and described in
- \autoref{etocdefaultlines}.
-
-Even if \csb{etocsetstyle} has been used, the global display style
-remains initially as defined by the document class (or the
-|tocloft| package); one needs to use the command
-\csb{etocsettocstyle} or its variants to exit from this
-compatibility mode at the ``toc display style'' level. It will be
-re-activated if use if made of \csb{etocstandarddisplaystyle}.
-
-\section{A first example}
-\label{sec:firstexample}
-
-Let us present a first example of specification for line styles.
-Immediately after the start of \autoref{part:overview} we inserted in the
-source file:
-\centeredline{|\invisiblelocaltableofcontents \label{toc:overview}|} This
-sets-up the label |toc:overview|, and we can use it at any location in the
-document: \centeredline{|\tableofcontents \ref{toc:overview}|} And as we used
-|\invisible...|,\footnote{this is a shortcut for setting temporarily the
- |tocdepth| to |-3|, which has the effect to tell \etoc not to print the TOC,
- and not even the heading.} the local TOC will exist only through its clones
-elsewhere in the document.
-
-We could use the line styles defined by \etoc, with \csb{etocdefaultlines}, or
-the default document class styles with \csb{etocstandardlines}, but we were a
-bit more ambitious here and wanted to design our own. The technique is a simple
-one: each heading is in its own paragraph, which may extend on multiple lines;
-it is responsible for setting its own |\leftskip|.
-
-
-
-\begingroup
-\parindent 0pt
-\parfillskip 0pt
-\leftskip 0cm
-\rightskip 1cm
-\etocsetstyle {section}
- {}
- {\leavevmode\leftskip 0cm\relax}
- {\bfseries\normalsize\makebox[.5cm][l]{\etocnumber.}%
- \etocname\nobreak\hfill\nobreak
- \rlap{\makebox[1cm]{\mdseries\etocpage}}\par}
- {}
-\etocsetstyle {subsection}
- {}
- {\leavevmode\leftskip .5cm\relax }
- {\mdseries\normalsize\makebox[1cm][l]{\etocnumber}%
- \etocname\nobreak\hfill\nobreak
- \rlap{\makebox[1cm]{\etocpage}}\par}
- {}
-\etocsetstyle {subsubsection}
- {}
- {\leavevmode\leftskip 1.5cm\relax }
- {\mdseries\normalsize\makebox[1cm][l]{\etocnumber}%
- \etocname\nobreak\hfill\nobreak
- \rlap{\makebox[1cm]{\etocpage}}\par}
- {}
-\etocruledstyle[1]{\bfseries \Large My first \etoc: TOC of
- \autoref{part:overview} (\nameref{part:overview})}
-\tableofcontents \ref {toc:overview}
-\endgroup
-
-
-This is a simple design which does not make provisions for page breaks
-which should be discouraged in-between a section and a subsection
-etc\dots{} as we only used it for the table of contents of this part, thus
-with sections as top levels, there was no need to specify a style for
-parts too (we defined a subsubsection line style but as it turns
-out there are no subsubsections in this part). The two commands used are
-\csb{etocsetstyle} for specifying the line styles, and
-\csb{etocruledstyle} for the TOC global style.
-
-The |\rightskip| is shared by all, and creates space where the page
-numbers get printed. For an elaboration of this technique see the next
-\autoref{sec:secondexample} as well as \autoref{ssec:tocwithdepthtags}
-which provides a TOC with parts and paragraphs. Both allow multi-line
-headings and employ a technique for putting page numbers in the right margin
-which was inspired from what \LaTeX2e's |\@dottedtocline| macro does.
-
-
-
-\begin{verbatim}
-\begingroup\parindent 0pt \parfillskip 0pt \leftskip 0cm \rightskip 1cm
-\etocsetstyle {section}
- {}
- {\leavevmode\leftskip 0cm\relax}
- {\bfseries\normalsize\makebox[.5cm][l]{\etocnumber.}%
- \etocname\nobreak\hfill\nobreak
- \rlap{\makebox[1cm]{\mdseries\etocpage}}\par}
- {}
-\etocsetstyle {subsection}
- {}
- {\leavevmode\leftskip .5cm\relax }
- {\mdseries\normalsize\makebox[1cm][l]{\etocnumber}%
- \etocname\nobreak\hfill\nobreak
- \rlap{\makebox[1cm]{\etocpage}}\par}
- {}
-\etocsetstyle {subsubsection}
- {}
- {\leavevmode\leftskip 1.5cm\relax }
- {\mdseries\normalsize\makebox[1cm][l]{\etocnumber}%
- \etocname\nobreak\hfill\nobreak
- \rlap{\makebox[1cm]{\etocpage}}\par}
- {}
-\etocruledstyle[1]{\bfseries \Large My first \etoc: TOC of
- \autoref{part:overview} (\nameref{part:overview})}
-\tableofcontents \ref {toc:overview}
-\endgroup
-\end{verbatim}
-
-\section{A second example}
-\label{sec:secondexample}
-
-This second example displays only the contents from
-\autoref{part:linestyles} and \autoref{part:globalcmds}. This selection
-is done via the technique of \emph{depth tags}, described in
-\autoref{etocsettagdepth} and \autoref{ssec:tocwithdepthtags}. Its
-layout is a bit like the one of the \hyperref[toc:main]{main document
- TOC}, although the line styles are coded very differently.
-
-\begingroup
-\newcommand*{\DotsAndPage}
-{\nobreak\leaders\hbox{\bfseries\normalsize\hbox to .75ex {\hss.\hss}}%
- \hfill\nobreak
- \makebox[\rightskip][r]{\bfseries\normalsize\etocpage}\par}
-
-\etocsetstyle {part}
-{\parindent 0pt
- \nobreak
- \etocskipfirstprefix}
-{\pagebreak[3]\bigskip}
-{\large\rmfamily\bfseries\scshape\centering
- \etocifnumbered{Part \etocnumber{} -- }{}\etocname\par}
-{}
-
-\etocsetstyle {section}
-{\leftskip 0pt \rightskip .75cm \parfillskip-\rightskip
- \nobreak\medskip
- \etocskipfirstprefix}
-{\leftskip 0pt \rightskip .75cm \parfillskip-\rightskip
- \pagebreak[1]\smallskip}
-{\normalsize\rmfamily\bfseries\scshape
- \etocnumber. \etocname\DotsAndPage }
-{\parfillskip 0pt plus 1fil\relax }
-
-\etocsetstyle {subsection}
-{\leftskip1cm\rightskip .75cm \parfillskip 0pt plus 1fil\relax
- \nobreak\smallskip}
-{}
-{\footnotesize\sffamily\mdseries\itshape
- \etocname{} (\etocnumber, p. \etocpage). }
-{\par\medskip}
-
-\etocsettagdepth {preamble} {none}
-\etocsettagdepth {overview} {none}
-\etocsettagdepth {arbitrarily}{none}
-\etocsettagdepth {surprising} {none}
-\etocsettagdepth {linestyles} {subsection}
-\etocsettagdepth {globalcmds} {subsection}
-\etocsettagdepth {custom} {none}
-\etocsettagdepth {tips} {none}
-\etocsettagdepth {code} {none}
-
-\etocsettocstyle {\centering\LARGE\textsc{\contentsname}\par\nobreak\medskip}{}
-\etocsetnexttocdepth {subsection}
-\tableofcontents
-\endgroup
-
-The code:
-\begin{verbatim}
-\begingroup
-\newcommand*{\DotsAndPage}
-{\nobreak\leaders\hbox{\bfseries\normalsize\hbox to .75ex {\hss.\hss}}%
- \hfill\nobreak
- \makebox[\rightskip][r]{\bfseries\normalsize\etocpage}\par}
-
-\etocsetstyle {part}
-{\parindent 0pt
- \nobreak
- \etocskipfirstprefix}
-{\pagebreak[3]\bigskip}
-{\large\rmfamily\bfseries\scshape\centering
- \etocifnumbered{Part \etocnumber{} -- }{}\etocname\par}
-{}
-
-\etocsetstyle {section}
-{\leftskip 0pt \rightskip .75cm \parfillskip-\rightskip
- \nobreak\medskip
- \etocskipfirstprefix}
-{\leftskip 0pt \rightskip .75cm \parfillskip-\rightskip
- \pagebreak[1]\smallskip}
-{\normalsize\rmfamily\bfseries\scshape
- \etocnumber. \etocname\DotsAndPage }
-{\parfillskip 0pt plus 1fil\relax }
-
-\etocsetstyle {subsection}
-{\leftskip1cm\rightskip .75cm \parfillskip 0pt plus 1fil\relax
- \nobreak\smallskip}
-{}
-{\footnotesize\sffamily\mdseries\itshape
- \etocname{} (\etocnumber, p. \etocpage). }
-{\par\medskip}
-
-\etocsettagdepth {preamble} {none}
-\etocsettagdepth {overview} {none}
-\etocsettagdepth {arbitrarily}{none}
-\etocsettagdepth {surprising} {none}
-\etocsettagdepth {linestyles} {subsection}
-\etocsettagdepth {globalcmds} {subsection}
-\etocsettagdepth {custom} {none}
-\etocsettagdepth {tips} {none}
-\etocsettagdepth {code} {none}
-
-\etocsettocstyle {\centering\LARGE\textsc{\contentsname}\par\nobreak\medskip}{}
-\etocsetnexttocdepth {subsection}
-\tableofcontents
-\endgroup
-\end{verbatim}
-
-\section{Linked list of the main package commands}
-
-\begingroup\raggedcolumns
-\advance\linewidth18pt
-\begin{multicols}{3}\parindent0pt\relax
- \csb{etocaftercontentshook}\par
- \csb{etocaftertitlehook}\par
- \csb{etocaftertochook}\par
- \csb{etocbeforetitlehook}\par
- \csb{etocdefaultlines}\par
- \csb{etocdepthtag.toc}\par
- \csb{etocdisplay}\par
- \csb{etocframedstyle}\par
- \csb{etocframed}\par
- \csb{etociffirst}\par
- \csb{etocifnumbered}\par
- \csb{etocignoredepthtags}\par
- \csb{etocignoretoctocdepth}\par
- \csb{etocinline}\par
- \csb{etoclink}\par
- \csb{etoclocalframed}\par
- \csb{etoclocalmulticol}\par
- \csb{etoclocalruled}\par
- \csb{etocmulticolstyle}\par
- \csb{etocmulticol}\par
- \csb{etocname}\par
- \csb{etocnumber}\par
- \csb{etocobeydepthtags}\par
- \csb{etocobeytoctocdepth}\par
- \csb{etocpage}\par
- \csb{etocruledstyle}\par
- \csb{etocruled}\par
- \csb{etocsetlevel}\par
- \csb{etocsetnexttocdepth}\par
- \csb{etocsetstyle}\par
- \csb{etocsettagdepth}\par
- \csb{etocsettocdepth.toc}\par
- \csb{etocsettocdepth}\par
- \csb{etocsettocstyle}\par
- \csb{etocskipfirstprefix}\par
- \csb{etocstandarddisplaystyle}\par
- \csb{etocstandardlines}\par
- \csb{etocthelinkedname}\par
- \csb{etocthelinkednumber}\par
- \csb{etocthelinkedpage}\par
- \csb{etocthelink}\par
- \csb{etocthename}\par
- \csb{etocthenumber}\par
- \csb{etocthepage}\par
- \csb{etoctoccontentsline}\par
- \csb{etoctoclines}\par
-%\vspace{5\baselineskip}\hrule height 0pt
-\end{multicols}
-\endgroup
-
-
-\clearpage
-% 15 octobre, je teste les tags
-\etocdepthtag.toc {arbitrarily}
-
-\part{Arbitrarily many TOCs, and local ones too}
-% 13 octobre, ceci était une section avant
-
-\thispartstats
-
-\etocsettocstyle{}{}
-\etocstandardlines
-\localtableofcontents
-
-\section{Labeling and reusing elsewhere}
-
-\etoc allows arbitrarily many \csa{tableofcontents} commands in
-your document. The line styles and the toc display style may of
-course be changed in-between. Furthermore
-\csa{localtableofcontents} will print local tables of
-contents: \emph{i.e.} all sections and sub-units inside a
-given chapter, or all subsubsections and lower inside a given
-subsection, etc . . .
-
-\etoc allows the labeling of a TOC with (for example)
-\csa{label\{toc:A\}} and will redisplay it elsewhere when
-told \csa{tableofcontents}\csa{ref\{toc:A\}}. The actual
-layout (title inclusive) used for the cloned TOC will be
-decided locally. The line styles and toc display style
-(including the title) will be the current ones and the
-current value of the |tocdepth| counter is obeyed. As an
-example the table of contents of
-\autoref{part:custom} is in a \hyperref[toc:d]{float} which appears
-\vpageref{toc:d}.
-\begin{figure}[ht!]
- \centering
- \begingroup
- \etocstandardlines
- \renewcommand{\etocbkgcolorcmd}{\color{green!5}}
- \renewcommand{\etocbelowtocskip}{0pt\relax}
- \fboxsep1ex
- \etocframedstyle [1]{\fbox{\makebox[.5\linewidth]{\etocfontminusone
- \hyperref[toc:c]{I am from far away}}}}
- \tableofcontents \label{toc:d} \ref{toc:c}
- \endgroup
-%% \centeredline{The original is \hyperref[toc:c]{there}.}
-\end{figure}
-
-We used this:
-\begin{verbatim}
-\begin{figure}[ht!]
- \centering
- \begingroup
- \etocstandardlines
- \renewcommand{\etocbkgcolorcmd}{\color{green!5}}
- \renewcommand{\etocbelowtocskip}{0pt\relax}
- \fboxsep1ex
- \etocframedstyle [1]{\fbox{\makebox[.5\linewidth]{\etocfontminusone
- \hyperref[toc:c]{I am from far away}}}}
- \tableofcontents \label{toc:d} \ref{toc:c}
- \endgroup
-\end{figure}
-\end{verbatim}
-Important: one should not use elsewhere \toc|\ref{toc:d}|. To clone again, one
-must use a reference to the original label: \toc|\ref{toc:c}|.
-
-\section{A powerful functionality of \etoc: the
- re-assignment of levels with \csbhyp{etocsetlevel}}
-
-The intrinsic levels manipulated by \etoc are numeric: from
-|-2| (which corresponds to |book| in the |memoir| class)
-down (from the big to the small)
-to |5| (|subparagraph|). But the assignment of a numeric level
-to a given name can be modified at any time with the command
-\csb{etocsetlevel}\marg{level\_name}\marg{number}. In conjunction
-with the use of the \LaTeX{} |tocdepth| counter, this has
-powerful applications: \meta{level\_name} does not have to
-coincide with an actual document sectioning command, and \etoc
-can be used to print arbitrary ``lists of things'', using no
-other auxiliary file than the |.toc| file. This is
-explained further in \autoref{part:surprising}.
-
-\begin{framed}
- It is often said that in the standard classes, the sectioning
- level of |\part| is |0| in the classes not having a |\chapter|
- command, and |-1| in classes having a |\chapter| command. This
- is \emph{correct} for what regards the \emph{automatic
- numbering}, as is governed by the value of the |secnumdepth|
- counter; but it is \emph{wrong} for what regards the effect of
- the |tocdepth| counter: setting the |tocdepth| to |-1| in the
- |article| class just before |\tableofcontents| does \emph{not}
- prevent Parts from appearing in the Table of Contents. One has
- to set it to |-2| for that, whether in the |article| or in the
- |book| class.
-
- The canonical levels, a priori known to \etoc, are those of
- relevance to the \textbf{|tocdepth|} counter in the standard
- classes and are recapitulated in this table: \centeredline{
- \fbox{\begin{tabular}{rc}
- (|memoir| class) book&-2\\ part&-1\\ chapter&0 \\
- section&1\\ subsection&2 \\
- subsubsection&3 \\ paragraph&4 \\ subparagraph& 5
- \end{tabular}}}
-
-\smallskip With \etoc, the user can easily print a local table of
-contents inside a given subsection, where subsubsections will be
-printed in the style of sections, paragraphs in the style of
-subsections, and subparagraphs in the style of subsubsections, if
-so desired. One can also decide to set everything to be at the level
-|6| (never displayed by \etoc), except for example
-paragraphs, promoted to be at level |1|, and then one obtains a nice
-table of contents of all the paragraphs from the document!
-(|tocdepth| at least |1|)\footnotemark
-\end{framed}
-
-\footnotetext{and one should naturally not print this TOC of paragraphs in
- compatibility mode, which would insist on inserting a gigantic left
- margin.}
-
-\section{The \csbhyp{etoc\-set\-toc\-depth} and
- \csbhyp{etoc\-set\-next\-toc\-depth} commands}
-\label{etocsettocdepth}
-\label{etocsetnexttocdepth}
-
-The |tocdepth| counter has no bearing on what gets written to the |.toc| file;
-its action is only on the actual typesetting of the table of contents: in the
-standard classes there is only one |\tableofcontents| possible, whereas with
-\etoc, arbitrarily many are allowed, so one may change |tocdepth| to the
-appropriate value (which decides the finest sectioning level displayed) again
-and again each time a table of contents needs to be typeset.
-
-\etoc provides \csb {etocsettocdepth}\marg{level} whose mandatory argument is
-either
-numeric (from |-3| to |5|) or a division name such as |subsection| or
-|subsubsection| or any name previously declared to \etoc with
-\csb{etocsetlevel} (the keywords |all| and |none| are recognized, although not
-corresponding to a document division).
-This does the appropriate |\setcounter{tocdepth}{numeric_level}|.
-
-As is explained in the next subsection, |tocdepth| is used by |hyperref|, and
-one must take steps to prevent its changes from influencing the bookmarks, too.
-So, \etoc has \csb {etocsetnexttocdepth}\marg{level} whose influence ceases
-immediately after the next table of contents. Thus, |\invisibletableofcontents|
-is essentially |\etocsetnexttocdepth{none}\tableofcontents|.
-
-The simplest course is thus to have after |\begin{document}| and before the
- first |\tableofcontents| a single instance of the \csb{etocsettocdepth}
- command, with argument the deepest level (or most commonly used deepest level)
- among the tables of contents of the document, and to use locally,
- where needed, \csb{etocsetnexttocdepth} before |\tableofcontents| or
- |\localtableofcontents|.
-
-\subsection{The hyperref option \emph{bookmarksdepth}}
-\label{ssec:bookmarksdepth}
-
-When modifying the counter |tocdepth| for the purposes of
-multiple uses of \toc or \localtoc, one should be aware that
-package |hyperref| by default takes into account the
-\emph{current} value of the |tocdepth| counter to decide
-whether the |pdf| file will contain a bookmark corresponding
-to sectioning commands encountered in the source file. Thus,
-one typically needs to reset |tocdepth| to its previous
-value after having temporarily modified it for a given table of
-contents.
-
-Or, there is the \emph{bookmarksdepth=n} option of package
-|hyperref|, with \emph{n} the desired document bookmarks
-maximal depth, which can be numeric or the name of a level known to
-|hyperref|. This documentation previously passed |bookmarksdepth=3| as
-option to |hyperref|, so even if |tocdepth| was left to |1|
-by inadvertance after printing a certain table of contents
-this did not modify the bookmark tree of the |pdf| file. Now that
-\csb{etocsetnexttocdepth} has been added to the package, we have used it
-systematically and there was no need for |bookmarksdepth=3| anymore.
-
-\section{The command \csbhyp{etoc\-set\-toc\-dep\-th.toc}}
-\label{etocsettocdepth.toc}
-
-This command \csb{etocsettocdepth.toc} implements some functionality of
-|tocvsec2|\footnote{\url{http://ctan.org/pkg/tocvsec2}. I thank D.B. for drawing
- my attention to the incompatibility of this package with \etoc.}, a package
-which however was incompatible with \etoc (it can still be used for its
-|secnumdepth|-related commands, but its |toc|-related activities will get
-canceled by \etoc) and more-or-less designed for a single table of contents.
-
-The action of \csb{etocsettocdepth.toc} is totally different than the one of
-\csb{etocsettocdepth}. Rather than modifying the |tocdepth| counter immediately,
-it adds a line to the |.toc| file which, when executed inside a table of
-contents will enact this change.
-
-The command \csb{etocsettocdepth.toc}, like
-\csb{etocsettocdepth}, accepts both numeric and named
-arguments. In the case of a named argument, the actual numeric
-value to be used is not yet decided at the time the |.toc|
-file is created; it will be the value currently specified for
-the named level at the time each table of contents (not having
-done |\etocignoretoctocdepth|) is typeset.
-
-The |tocdepth| counter will never be set to a value finer than its initial value
-at the start of the table of contents: so adding commands
-\csb{etocsettocdepth.toc} in the document is a way to \emph{restrict} locally
-the depth of the table of contents. For example to prevent inclusion in the
-tables of contents of the sub-sub-sections of a given chapter.
-
-This
-{\fbox{gets executed in ALL tables of contents.}}
-
-\subsection{The commands \csbhyp{etocobeytoctocdepth} and \csbhyp{etocignoretoctocdepth}}
-\label{etocobeytoctocdepth}
-\label{etocignoretoctocdepth}
-
-
-So \csb{etocignoretoctocdepth} is provided to cancel the
-\csa{etocsettocdepth.toc} mechanism when
-needed; and \csb{etocobeytoctocdepth} will
-re-activate it. The package does initially \csb{etocobeytoctocdepth}.
-
-
-\section{The commands \csbhyp{etoc\-depth\-tag.toc} and \csbhyp{etocsettagdepth}}
-\label{etocdepthtag.toc}
-\label{etocsettagdepth}
-
-As mentioned above, when the argument to \csb{etocsettocdepth.toc} isn't
-numeric but a named level the actual numeric level used is decided at the time
-the TOC gets typeset, thus with the \emph{shuffling abilities of \etoc}, one may
-obtain a very flexible control in the following way: one first declares with
-\csb{etocsetlevel} some
-dummy named level, say |partIII|, assigning it the invisible numeric level |6|.
-Then before the actual third |\part| command in the source one inserts
-\csb{etocsettocdepth.toc}|{partIII}|. At the location where the effect should
-cease one inserts in the source \csb{etocsettocdepth.toc}|{all}|. It is now
-possible to specify, each time one wants to typeset a TOC, what will be the
-finest level for the entries originating in the third part: one just has to do
-\csa{etocsetlevel}|{partIII}{1}| for example. This will limit to sections
-(if |tocdepth| was at least at that level at the time \toc is encountered).
-
-This method has some limitations:
-\begin{enumerate*}[label={(\roman*)}]
- \item the second argument to \csb{etocsetlevel} must be numeric,
- \item it can not be set to |-3| (which would be necessary if one wanted to
- exclude an entire Book from a TOC in a |memoir| document with multiple such
- Books \dots admittedly a possibly rare case!),
- \item it is a bit of a hack as |partIII| is not a real division unit, but just
- a \emph{tag}.
-\end{enumerate*}
-
-Release |1.07h| has a command \csb{etocdepthtag.toc} which
-makes it easier to achieve this variable local control of the |tocdepth| at the
-time of typesetting TOCs.
-
-It is used as \csb{etocdepthtag.toc}\marg{tag\_name}, where the \meta{tag\_name}
-is anything, and this will put the tag in the |.toc| file. When typesetting a
-TOC, one issues a series of commands
-\csb{etocsettagdepth}\marg{tag\_name}\marg{level} where the \meta{level} may be
-either numeric (from |-3| to |5|) or the name of a division unit known to \etoc,
-or |none| or |all|. The effect of the tag inside the |.toc| file will then be to
-set the |tocdepth| counter to the desired value, in real time (as mentioned
-already, this can not get finer than the initial value of |tocdepth| at the
-start of the TOC).
-
-The added flexibility is thus that \csb{etocsetlevel} has not been used in a
-kind of hacky way, that one may use named level depths, and the
-keywords |none| and |all|.
-
-As usual, once the tag depths have been set, they remain in effect until getting
-redefined or seeing their scope expire via the closing of a group or of a
-surrounding
-environment. For an example, see \autoref{ssec:tocwithdepthtags}.
-
-
-\subsection{The commands \csbhyp{etocobeydepthtags} and \csbhyp{etocignoredepthtags}}
-\label{etocobeydepthtags}
-\label{etocignoredepthtags}
-
-
-After \csb{etocignoredepthtags}, the |.toc| depth tags are ignored (but
-\csb{etocdepthtag.toc} still works). The package does initially
-\csb{etocobeydepthtags} which makes \etoc react to the found tags in the
-|.toc| file.
-
-
-
-
-
-\section{Adding commands to the \texorpdfstring{\texttt{.toc}}{.toc} file}
-\label{sec:addingtotoc}
-
-We described above \csb{etocsettocdepth.toc} and \csb{etocdepthtag.toc} which
-both insert commands inside the |.toc| file. An even more general mechanism of
-adding ``action tags'' to the |.toc| file could be envisioned, but this would
-just be a wrapper for direct use of |\addtocontents{toc}{\something}|.
-
-One should be cautious when adding in this way
-things
-to the |.toc| file. For example, inserting
-\csa{addtocontents}|{toc}{\string\clearpage}|
-just
-before a \csa{part} to fix the problem when some part entry (in
-the table of contents) is isolated at the bottom of one page,
-will cause problems with multiple TOCs: this \csa{clearpage}
-will be executed by \etoc each time a \toc or \localtoc
-command is encountered! The more prudent thing is to do
-rather: {\csa{addtocontents}|{toc}{\string\myclearpage}|,}
-to have a |\let\myclearpage\relax| at the top level of the
-document and to use where needed something like:
-\begin{verbatim}
-\let\myclearpage\clearpage
-\tableofcontents
-\let\myclearpage\relax
-\end{verbatim}
-The |memoir| class has the command \csa{settocdepth} which
-writes a \csa{changetoc\-depth} command inside the |.toc| file.
-This will impact the typesetting by \etoc of \emph{all} tables
-of contents, with (possibly) unexpected results: imagine the
-document has \csa{settocdepth}|{chapter}| at some point to
-avoid having the sections from subsequent chapters be listed
-in the main table of contents. Then a local table of contents
-in one of these chapters will print a title but will be
-without any entry.
-
-As the |memoir| class by itself allows multiple\toc
- these issues already arise there,
- independently of \etoc, see page 170 of the |memoir|
- manual.
-
-For this specific issue, the commands \csb{etocsettocdepth.toc},
-\csb{etocignoretoctocdepth} and \csb{etocobeytoctocdepth} are the way to go; or
-their variants \csb{etocdepthtag.toc} and \csb{etocsettagdepth}.
-
-As an aside, any |\setcounter{tocdepth}{n}| command added directly to the |.toc|
-file sees its effect (since release |1.07g|) canceled at the end of each table
-of contents, which automatically does a |\setcounter{tocdepth}{previous_value}|
-with the value active on entering the table of contents.
-
-\subsection{The hyperref option \emph{hidelinks}}\label{ssec:hidelinks}
-
-The colored links (and also the rectangle links) are a bit
-annoying when used in tables of contents, especially when
-the document uses \etoc and has plenty of them! One may wish
-for having colored links, \emph{except} for those within
-table of contents!
-Indeed, why would things in TOCs need to be either framed in
-rectangles or colored, when the user \emph{already expects
- them to be links}?
-
-I use the following trick: either in the preamble using
-|\AtBeginDocument|, or right after |\begin{document}|, I
- have the command
- \centeredline{|\addtocontents{toc}{\protect\hypersetup{hidelinks}}|}
-
- \begin{framed}
- All TOCs typeset by \etoc have their contents done
- within a group (as if enclosed in an environment). So
- the command \csa{hypersetup}|{hidelinks}| will be
- executed by \emph{each} TOC, but its effect will be
- limited to that TOC.
- \end{framed}
-
- I found out experimentally that the option |hidelinks| could
- indeed be set many times with |\hypersetup| (this is not the
- case of all |hyperref| options).
-
-
-
-\section{Two Examples}
-
-\subsection{A Beautiful Thesis example}
-
-Here is another relatively simple example of use of the package
-functionalities.
-Let us set up some line styles. We choose a style for sections and
-sub-sections which would be suitable for, respectively, sections and
-sub-sections in an average length memoir. The line style specifications have
-some redundancy for clarity, and do not care about what to do at possible page
-breaks. Also, they do not worry about potential multi-column use.
-
-\begin{verbatim}
-\begingroup % we start a group to keep the style changes local
-\newlength{\tocleftmargin} \setlength{\tocleftmargin}{5cm}
-\newlength{\tocrightmargin} \setlength{\tocrightmargin}{1cm}
-
-\etocsetstyle{section} % will pretend to be a Chapter
-{\addvspace{1ex}\parfillskip0pt
- \leftskip\tocleftmargin % (already done in title)
- \rightskip\the\tocrightmargin plus 1fil
- \parindent0pt\color{cyan}} % (already done)
-{\bfseries\LARGE\upshape\addvspace{1ex}\leavevmode}
-{\llap{Chapter\hspace{.5em}{\etocnumber}\hspace{.75cm}}\etocname
- \hfill\makebox[-\tocrightmargin][l]{\makebox[0pt]{\etocpage}}\par}
-{}
-
-\etocsetstyle{subsection} % will pretend to be a Section
-{}
-{\mdseries\large\addvspace{.5ex}\leavevmode}
-{\llap{\etocnumber\hspace{.75cm}}\textit{\etocname}%
- \hfill\makebox[-\tocrightmargin][l]{\makebox[0pt]{\etocpage}}\par}
-{}
-
-\def\tmptitle{My Beautiful Thesis}
-\etocsettocstyle{\color{cyan}\parindent0pt \leftskip\tocleftmargin
- \leavevmode\leaders\hrule height 1pt\hfill\
- \huge\textit{\tmptitle}\par}{\bigskip}
-
-\tableofcontents \ref{toc:overview}
-\endgroup
-\end{verbatim}
-
-
-\begingroup
-\newlength{\tocleftmargin}
-\setlength{\tocleftmargin}{5cm}
-\newlength{\tocrightmargin}
-\setlength{\tocrightmargin}{1cm}
-
-\etocsetstyle{section}
-{\addvspace{1ex}\parfillskip0pt
- \leftskip\tocleftmargin
- \rightskip\the\tocrightmargin plus 1fil
- \parindent0pt\color{cyan}}
-{\bfseries\LARGE\upshape\addvspace{1ex}\leavevmode}
-{\llap{Chapter\hspace{.5em}{\etocnumber}\hspace{.75cm}}\etocname
- \hfill\makebox[-\tocrightmargin][l]{\makebox[0pt]{\etocpage}}\par}
-{}
-
-\etocsetstyle{subsection}
-{}
-{\mdseries\large\addvspace{.5ex}\leavevmode}
-{\llap{\etocnumber\hspace{.75cm}}\textit{\etocname}%
- \hfill\makebox[-\tocrightmargin][l]{\makebox[0pt]{\etocpage}}\par}
-{}
-
-\def\tmptitle{My Beautiful Thesis}
-
-\etocsettocstyle{\color{cyan}\parindent0pt\leftskip\tocleftmargin
- \leavevmode\leaders\hrule height 1pt\hfill\
- \huge\textit{\tmptitle}\par}{\bigskip}
-
-\tableofcontents \ref{toc:overview}
-% And again, for the fun of it:
-% \def\tmptitle{My Very Beautiful Thesis}
-% \tableofcontents \ref{toc:c}
-\endgroup
-
-
-\subsection{A TOC with a background color}\label{ssec:again}
-
-Let us now try out some more sophisticated line styles. The
-display will use the \csa{etocframedstyle} package command, which
-requires that the produced table of contents fits on a single
-page.
-We wrap it up in a \hyperref[toc:floating]{figure environment} showing up
-\vpageref{toc:floating}.
-
-
-\begin{figure}[htbp!]\centering
-\colorlet{subsecnum}{black}
-\colorlet{secbackground}{green!30}
-\colorlet{tocbackground}{red!20!green!20}
-
-\renewcommand{\etocbkgcolorcmd}{\color{tocbackground}}
-\renewcommand{\etocleftrulecolorcmd}{\color{tocbackground}}
-\renewcommand{\etocrightrulecolorcmd}{\color{tocbackground}}
-\renewcommand{\etocbottomrulecolorcmd}{\color{tocbackground}}
-\renewcommand{\etoctoprulecolorcmd}{\color{tocbackground}}
-
-\renewcommand{\etocleftrule}{\vrule width 3cm}
-\renewcommand{\etocrightrule}{\vrule width 1cm}
-\renewcommand{\etocbottomrule}{\hrule height 12pt}
-\renewcommand{\etoctoprule}{\hrule height 12pt}
-
-\renewcommand{\etocinnertopsep}{0pt}
-\renewcommand{\etocinnerbottomsep}{0pt}
-\renewcommand{\etocinnerleftsep}{0pt}
-\renewcommand{\etocinnerrightsep}{0pt}
-
-\newcommand\shiftedwhiterule[2]{%
- \hbox to \linewidth{\color{white}%
- \hskip#1\leaders\vrule height1pt\hfil}\nointerlineskip
-\vskip#2}
-
-\etocsetstyle{subsubsection}{\etocskipfirstprefix}
-{\shiftedwhiterule{\leftskip}{6pt}}
-{\sffamily\footnotesize
-\leftskip2.3cm\hangindent1cm\rightskip.5cm\noindent
-\hbox to 1cm{\color{subsecnum}\etocnumber\hss}%
-\color{black}\etocname\leaders\hbox to .2cm{\hss.}\hfill
-\rlap{\hbox to .5cm{\hss\etocpage\hskip.1cm}}\par
-\nointerlineskip\vskip3pt}
-{}
-
-\etocsetstyle{subsection}{\etocskipfirstprefix}
-{\shiftedwhiterule{1.5cm}{6pt}}
-{\sffamily\small
-\leftskip1.5cm\hangindent.8cm\rightskip.5cm\noindent
-\hbox to .75cm{\color{subsecnum}\etocnumber\hss}%
-\color{black}\etocname\leaders\hbox to .2cm{\hss.}\hfill
-\rlap{\hbox to .5cm{\hss\etocpage\hskip.1cm}}\par
-\nointerlineskip\vskip3pt}
-{}
-
-\newcommand{\coloredstuff}[2]{%
- \leftskip0pt\rightskip0pt\parskip0pt
- \fboxsep0pt % \colorbox uses \fboxsep also when no frame!
- \noindent\colorbox{secbackground}
- {\parbox{\linewidth}{%
- \vskip5pt
- {\noindent\color{#1}#2\par}\nointerlineskip
- \vskip3pt}}%
- \par\nointerlineskip}
-
-% v1.07l on the occasion of traduction into German documentation:
- % APRIL 26, 2014 Improvement in the section style for better placement of
- % page number when the section name is more than one line long. Use of
- % \makebox rather than \hbox, to be more LaTeX like.
-\etocsetstyle{section}
-{\coloredstuff{blue}
- {\hfil \bfseries\large Contents of Part One\hfil}}
-{\vskip3pt\sffamily\small}
-{\coloredstuff{blue}
- {\leftskip1.5cm\rightskip.5cm\parfillskip-\rightskip
- \makebox[0pt][r]{\makebox[.5cm][l]{\etocnumber}}%
- \etocname\hfill{\makebox[.5cm][r]{\etocpage\hspace{.1cm}}}}%
- \vskip6pt}
-{}
-
-
-% attention car \ref{toc:floating} fera référence au compteur de
-% toutes les toc, pas visibletoc.
-
-\etocframedstyle[1]{}
-\tableofcontents \label{toc:floating} \ref{toc:overview}
-\vspace{-\baselineskip}
-\centeredline{|\tableofcontents \ref{toc:overview}|
-(\emph{cf.} \autoref{ssec:again} and \hyperref[toc:clone]{this other toc})}
-\end{figure}
-
-The actual design is not pre-built in \etoc; it uses its `framed' style with a
-background color. The frame borders have been set to have the same color as the
-one serving as background for the entire thing. This design (with other colors)
-is in use also for \hyperref[toc:clone]{this other toc}, and the
-reader is referred to its \hyperref[ssec:tocclone]{subsection} for the
-coding used.
-
-% 11 octobre 2013 ceci était une section avant:
-% (17 octobre, je m'aperçois qu'à cause des différents chgts, des
-% sous-sections devenant des sections etc... \thisspecialstats ici ne
-% faisait pas du tout des statistiques; vaut mieux supprimer et faire
-% simplement \localtableofcontents pour maintenir le même layout.)
-
-% les \clearpage sont embêtants; surtout si je prétends qu'on peut
-% recompiler facilement sous d'autres conditions...
-
-% on va plutôt faire un \vspace suffisant, cela sera un moindre mal
-
-%\vspace{1cm}
-
-\clearpage
-\etocdepthtag.toc {surprising}
-\part{Surprising uses of \etoc}
-\label{part:surprising}
-
-\thispartstats %% (pas de sous-section)
-
-\etocstandardlines
-\etocsettocstyle {}{}
-\localtableofcontents
-
-\section{The TOC of TOCs}
-
-\begingroup % \endgroup just after the \tableofcontents command
-\etocinline
-\etocsetlevel{part}{1}
-\etocsetlevel{visibletoc}{0}
-\etocsetstyle{visibletoc}
- {\etocskipfirstprefix}
- {, }
- {{\color{niceone}\etocname}}
- {}
-\etocsettocstyle{}{}
-\etocsetnexttocdepth{visibletoc}
-
-
-Here is the numbered and linked list of all tables of contents which are
-displayed within this document:\footnote{The TOCs put in
- floats may change the order: the numbers are listed
- in the order the TOCs are typeset in the document; but the numbering
- itself is from the order of the TOCs in the \emph{source} of
- this document... }
-\tableofcontents\endgroup. And to obtain
-it here we just wrote:\par\smallskip
-{\leftskip1cm\rightskip2cm
- \ttfamily\small\baselineskip11pt \noindent Here is the
- numbered and linked list of all tables of contents which are
- displayed within this
- document:~\string\tableofcontents.\par}
-
- The preparatory work was the following. First, we defined a
- counter |visibletoc| whose vocation is to get incremented at
- each displayed toc. \etoc has its own private counter but it
- counts all TOCs, even those not displayed because the |tocdepth|
- value was |-2| or |-3|.
-
- We could have added manually |\refstepcounter{visibletoc}|
- and |\label| commands at all suitable locations in the
- document source, and we would then have used here |\ref|
- commands, but this imposes heavy manual editing of the source.
-
- There is a much better way: there is a hook
- \csb{etocaftertitlehook} and we told it to increment the
- |visibletoc| counter and to write a line to the |.toc| file,
- in a manner analogous to what sectioning commands such as
- |chapter|, |section|, or |subsection| do. As \etoc
- increments its own private counter even before typesetting
- the title of a table of contents, this provides (most of the
- time) a better link destination than any counter manipulated
- from inside \csa{etocaftertitlehook} (for which the link
- would target the area just after the title). So, rather than
- including |\refstepcounter{visibletoc}| inside
- \csa{etocaftertitlehook}, we just put there
- |\stepcounter{visibletoc}| followed by the command
- \csb{etoctoccontentsline}|{visibletoc}{\thevisibletoc}|. This \etoc
- command \csb{etoctoccontentsline}\marg{level\_name}\marg{name} has the same
- effect as:
- \centeredline{| ||\addcontentsline{toc}|\marg{level\_name}\marg{name}}
- but its usefulness is to circumvent\footnote{using \csa{addtocontents} rather
- than \csa{addcontentsline}} the patching for automatic creation
- of bookmarks done to \csa{addcontentsline} by the |hyperref| package,
- as pdf bookmarks don't make
- much sense here (and would elicit a complaint
- of |hyperref| that the bookmark level is `unknown').\footnote{%
- The package provides a starred variant
- \staritb{etoctoccontentsline}, which does allow the creation
- of bookmarks and has a third mandatory argument which is the
- Level to be used by these bookmarks; depending on the context
- the starred as well as the non-starred variants may be
- profitably preceded by \csa{phantomsection}.}
-
- Finally, the preamble of the document did
- |\etocsetlevel{visibletoc}{6}|. The level |6| (or anything
- with a higher number) is ignored, even if |tocdepth| has
- value |10| for example; this is independently of whether \etoc
- uses the document class default line styles or its own line
- styles, or the ones defined by the user with the
- \csa{etocsetstyle} command. So there is no need to worry that
- something could go wrong.
-
- Then, only here we have set |\etocsetlevel{visibletoc}{0}|. And to display
- only this kind of entries we assign temporarily to |part| and |chapter| level
- |1| (or anything higher than zero) and set |tocdepth| to the value |0|. We
- also did \csa{etocsetstyle\{visibletoc\}\{\string\etocskipfirstprefix\}\{,
- \}\{\string\etocname\}\{\}} which defines an inline display with the comma
- as separator. Finally, as \etoc issues |\par| automatically by default just
- before typesetting a table of contents, we used the command \csb{etocinline}
- (also known as \cs{etocnopar}) which turns off this behavior.
-
-Here are the implementation details:
-
-\begingroup
-\begin{verbatim}
- < in the preamble >
-\newcounter{visibletoc}
-\renewcommand{\etocaftertitlehook}
- {\stepcounter{visibletoc}\etoctoccontentsline{visibletoc}{\thevisibletoc}}
-\etocsetlevel{visibletoc}{6}
-\begin{document}
- < document body >
-\subsection{Surprising uses of etoc}
-\begingroup
- \etocinline
- \etocsetlevel{part}{1}
- % \etocsetlevel{chapter}{1} % (no chapters in scrartcl class)
- \etocsetlevel{visibletoc}{0}
- \etocsetstyle{visibletoc}
- {\etocskipfirstprefix}{, }{{\color{niceone}\etocname}}{}
- \etocsettocstyle{}{} % don't set any title, rules or frame or multicol!
- \etocsetnexttocdepth{visibletoc} % display only the `visibletoc' entries from .toc
-
-Here is the numbered and linked list of all tables of contents which are
-displayed within this document: \tableofcontents.
-\endgroup
-\end{verbatim}
-
-\endgroup
-
-After |\etocsetstyle{visibletoc}{..}{..}{..}{..}|, all future TOCs (not in
-compatibility mode) will use the
-defined style for level |0| (which is normally the level for
-chapters). To keep these changes strictly local the simplest
-manner is to put everything inside a group.
-
-The \autoref{subsec:interverting} gives another use of the
-shuffling of levels.
-
-
-\section{Arbitrary ``Lists Of...'', \csbhyp{etoctoccontentsline}}
-\label{etoctoccontentsline}
-
-This idea of interverting the levels is very powerful and allows
-to let \etoc display lists of arbitrary things contained in the
-document. All of that still
-using nothing else than the |.toc| file!
-Example: imagine a document with dozens of
-exercises, perhaps defined as |\newtheorem{exercise}{}[section]|. Let
-us explain how to instruct \etoc to display an hyperlinked list
-of all these exercises. For this we put in the preamble:
-\begin{verbatim}
- \newtheorem{exerci}{}[section]
- % the exercice number will be recoverable via \etocname: v--here--v
- \newcommand*{\exercisetotoc}{\etoctoccontentsline{exercise}{\theexerci}}
- \newenvironment{exercise}{\begin{exerci}\exercisetotoc}{\end{exerci}}
- \etocsetlevel{exercise}{6}
-\end{verbatim}
-In this way, \csa{etocname} will give the exercise number (but \csa{etocnumber}
-will be empty). Had we used instead
-\begin{verbatim}
- \newcommand*{\exercisetotoc}
- {\etoctoccontentsline{exercise}{\protect\numberline{\theexerci}}}
-\end{verbatim}
-the exercise number would then have been available via \csa{etocnumber}, and
-\csa{etocname} would have been empty. It doesn't matter which one of the two
-methods is used. The \etoc command \csa{etoctoccontentsline}|{..}{..}| is
-provided as a substitute to \csa{addcon\-tentsline}|{toc}{..}{..}|: this is to
-avoid the patching which is done by |hyperref| to \csa{addcontentsline} in its
-process of creation of bookmarks. If one wants to authorize |hyperref| to create
-bookmarks at a specific level \meta{n}, one can use (here with \meta{n}$=$|2|)
-the starred variant \starit{etoctoccontentsline} which has an additional
-argument:
-\begin{verbatim}
-\newcommand{\exercisetotoc}{\etoctoccontentsline*{exercise}{\theexerci}{2}}
-\end{verbatim}
-
-The counter |exerci| is already
-incremented by the |exerci| theorem environment, and
-provides the correct destination for the link added by package
-|hyperref|. The command \csa{exercisetotoc} adds for each exercise a line
-to the |.toc| file, corresponding to a fictitious document
-unit with name `|exercise|'. A
-four-column list, including the sections, can then be
-typeset with the following code:
-\begin{verbatim}
- \etocsetnexttocdepth{2} % sections are at level 1 and will show up
-\begingroup
- \etocsetlevel{exercise}{2} % but:
- \etocsetlevel{chapter}{3} % no chapters
- \etocsetlevel{subsection}{3} % no subsections
- \etocsetlevel{part}{3} % no parts
- \etocsetstyle{exercise}{}{} % \etocname = exercise number
- {\noindent\etocname\strut\leaders\etoctoclineleaders\hfill\etocpage\par}
- {\pagebreak[2]\vskip\baselineskip}
- \etocsetstyle{section}{}{}
- {\noindent\strut{\bfseries\large\etocnumber\hskip.5em\etocname}\par
- \nopagebreak[3]}{}
- \etocruledstyle[4]{\Large\bfseries List of the exercises}
- \setlength{\columnseprule}{.4pt}
- \tableofcontents
-\endgroup
-\end{verbatim}
-
-
-\section{A TOC with a fancy layout}
-
-Here is a table of contents where
-the sections from a given chapter are to be represented by a number
-range (like 18--22 for a given chapter, 42--49 for another one ...
-of course to be inserted automatically in the TOC).
-
-This is not an image inclusion, the TOC is produced from its original
-|tex| source inserted in this document after replacement of
-|part|, |chapter| or |section| with |dummypart|, |dummychapter| and
-|dummysection| (and there is also a dummy page count). We
-copied the line styles used in the original and
-displayed the table of contents following:
-\begin{verbatim}
- \etocsetlevel{dummypart} {-1} \etocsetlevel{part} {2}
- \etocsetlevel{dummychapter}{0} \etocsetlevel{chapter}{2}
- \etocsetlevel{dummysection}{1} \etocsetlevel{section}{2}
- \etocsetnexttocdepth{dummysection}
-\end{verbatim}
-Each chapter displays the numbers of only the first and the last sections it
- contains. See the
-source file |etoc.dtx| for the details of how this is done.
-
-Another technique for doing this kind of things is explained in
- \autoref{ssec:statistics}.
-
-\begingroup
-
- \etocsetlevel{dummypart}{-1}
- \etocsetlevel{dummychapter}{0}
- \etocsetlevel{dummysection}{1}
- \etocsetlevel{part}{2}
- \etocsetlevel{chapter}{2}
- \etocsetlevel{section}{2}
-
- \newif\ifextraidone
- \newif\ifextraiidone
-
- \etocsetstyle{dummypart}
- {}
- {}
- {\begin{center}\Large\bfseries PART \etocnumber
- \ifextraiidone\\\etocname.\fi\end{center}
- \ifextraidone\else
- \noindent\hskip.7\linewidth
- \hbox to .2\linewidth
-% février (ou janvier?) 2013
-% je modifie ici en ajoutant un \hss, pour compenser la plus petite
-% taille de txrm. Ok.
- {\hss\small\textsc{\bfseries Sections.\hss Page.}}\par\fi
- \extraidonetrue
- }
- {}
-
- \newcommand\mytocleaders{\hbox to .125\linewidth{...\hss}}
- \etocsetstyle{dummychapter}
- {}
- {\par\noindent\etocifnumbered
- {\makebox[.15\linewidth][r]{\bfseries\etocnumber.}}
- {\hspace*{.15\linewidth}}}
- {\hbox to .65\linewidth
- {\hspace{1em}\etocname\leaders\mytocleaders\hss}%
- \hskip-.1\linewidth
- \hbox to .2\linewidth{\hspace{1.5em}...\hss
- \etocifnumbered
- {\etocpage}
- {\ifextraiidone\else\etocpage\fi}}%
- \hskip-.2\linewidth
- }
- {}
-
- \newbox\forsectionnumbers
- \makeatletter
-% 21 février 2013: je rajoute \color@begingroup et \color@endgroup
- \etocsetstyle{dummysection}
- {\setbox\forsectionnumbers=\hbox to .1\linewidth
- \bgroup\color@begingroup\hss\etocskipfirstprefix}
- {\@gobble}
- {\etocnumber---}
- {\etocnumber\color@endgroup\egroup
- % for reasons I do not quite understand, in some pdf viewers the dots
- % do not completely disappear if here \fboxsep0pt is used.
- % (problèmes liés à l'anti-aliasing, sur Mac OS X, Skim, Preview...)
- % (j'ai maintenu ici la méthode de mon post sur stackexchange, mais
- % sans doute je pourrais réfléchir à une autre façon évitant d'avoir à
- % « effacer »)
- \fboxsep=.5pt\colorbox{white}{\box\forsectionnumbers}\par
- \ifextraiidone\else
- \begin{center}\bfseries Concord.\end{center}
- \noindent\makebox[.15\linewidth][r]{\textsc{\bfseries Lesson.}}\par
- \fi\extraiidonetrue
- }
- \makeatother
-
- \renewcommand{\etocinnertopsep}{0pt}
-
- \etocruledstyle[1]{%
- \parbox{\linewidth}{%
- \centering
- \textsc{\bfseries\LARGE\MakeUppercase{Table of Contents}}\\
- \rule{.2\linewidth}{2pt}}%
- }
-
- \etocsetnexttocdepth{dummysection}
-
- \tableofcontents
-
-\makeatletter
- \def\adddummysection {\stepcounter{dummysection}%
- \addtocontents {toc}{\protect\contentsline
- {dummysection}{\protect\numberline{\thedummysection}}%
- {\the\dummypage }%
- %\ifEtoc@hyperref ou \ifdefined\hyperref si e-TeX
- {\@currentHref }%
- %\fi
- }}
-
- \def\adddummychapter #1{\stepcounter{dummychapter}%
- \advance\dummypage2
- \addtocontents {toc}{\protect\contentsline
- {dummychapter}{\protect\numberline{\thedummychapter}#1}%
- {\the\dummypage }%
- %\ifEtoc@hyperref ou \ifdefined\hyperref si e-TeX
- {\@currentHref }%
- %\fi
- }}
-
-
- \def\adddummychapno #1{\advance\dummypage2
- \addtocontents {toc}{\protect\contentsline
- {dummychapter}{#1}{\the\dummypage }%
- %\ifEtoc@hyperref ou \ifdefined\hyperref si e-TeX
- {\@currentHref }%
- %\fi
- }}
-
- \def\adddummypart #1{\stepcounter{dummypart}%
- \advance\dummypage4
- \addtocontents {toc}{\protect\contentsline
- {dummypart}{\protect\numberline{\Roman{dummypart}}#1}%
- {\the\dummypage }%
- %\ifEtoc@hyperref ou \ifdefined\hyperref si e-TeX
- {\@currentHref }%
- %\fi
- }}
-\makeatother
-
- \newcount\dummypage \dummypage-1
-
- \adddummypart {}
-
- \adddummychapno {Introductory}
-
- \newcount\tempcount
-
- \loop\advance\tempcount by 1
- \adddummysection
- \ifnum\tempcount<8
- \repeat
-
- \adddummychapter {Concord of Subject and Verb}
-
- \loop\advance\tempcount by 1
- \adddummysection
- \ifnum\tempcount<17
- \repeat
-
- \adddummychapter {Concord of Substantive and Adjective}
-
- \loop\advance\tempcount by 1
- \adddummysection
- \ifnum\tempcount<22
- \repeat
-
- \adddummychapno {Concord of Relative and its Antecedent}
-
- \loop\advance\tempcount by 1
- \adddummysection
- \ifnum\tempcount<25
- \repeat
-
- \adddummypart {Government}
-
- \adddummychapter {The Accusative Case}
-
- \adddummychapno {General uses}
-
- \loop\advance\tempcount by 1
- \adddummysection
- \ifnum\tempcount<30
- \repeat
-
- \adddummychapno {Particular uses}
-
- \loop\advance\tempcount by 1
- \adddummysection
- \ifnum\tempcount<37
- \repeat
-
- \adddummychapter {Verbs governing two Accusatives}
-
- \loop\advance\tempcount by 1
- \adddummysection
- \ifnum\tempcount<41
- \repeat
-
- \adddummychapter {The Causal}
-
- \loop\advance\tempcount by 1
- \adddummysection
- \ifnum\tempcount<49
- \repeat
-
- \adddummychapter {The Instrumental Case}
-
- \adddummychapno {General uses}
-
- \loop\advance\tempcount by 1
- \adddummysection
- \ifnum\tempcount<54
- \repeat
-
- \adddummychapno {Particular uses}
-
- \loop\advance\tempcount by 1
- \adddummysection
- \ifnum\tempcount<59
- \repeat
-
- \adddummychapter {The Dative Case}
-
- \adddummychapno {General uses}
-
- \loop\advance\tempcount by 1
- \adddummysection
- \ifnum\tempcount<65
- \repeat
-
- \adddummychapno {Particular uses}
-
- \loop\advance\tempcount by 1
- \adddummysection
- \ifnum\tempcount<71
- \repeat
-
- \adddummychapter {The Ablative Case}
-
- \adddummychapno {General uses}
-
- \loop\advance\tempcount by 1
- \adddummysection
- \ifnum\tempcount<75
- \repeat
-
- \adddummychapno {Particular uses}
-
- \loop\advance\tempcount by 1
- \adddummysection
- \ifnum\tempcount<86
- \repeat
-
- \adddummychapter {The Locative Case}
-
- \adddummychapno {General uses}
-
- \loop\advance\tempcount by 1
- \adddummysection
- \ifnum\tempcount<92
- \repeat
-
- \adddummychapno {Particular uses}
-
- \loop\advance\tempcount by 1
- \adddummysection
- \ifnum\tempcount<100
- \repeat
-\endgroup
-
-\section{Another compatibility mode}
-
-As explained in \autoref{ssub:compat}, the commands
-\csa{etocstandardlines} and \csa{etocstandarddisplaystyle} tell \etoc to,
-essentially, act as an observer. The document class layout for the table of
-contents is then perfectly obeyed. There is no way to customize this standard
-layout (change fonts, margins, vertical spacings, etc...) from within the
-package. For this, use some package dedicated to this task; because \etoc either
-is (temporarily perhaps) in compatibility mode with no customization on its part
-possible, or the user has specified the layout in \csa{etocsetstyle} commands
-(and \csa{etocsettocstyle}) and is (supposedly...) in complete control.
-
-Well, there is actually an alternative. It is possible to use the
-\csa{etocsetstyle} commands to recreate an artificial compatibility mode, in
-order to achieve effects like the following, all things being otherwise equal to
-the document class defaults:
-\begin{enumerate}[noitemsep]
-\item get the |hyperref| link to encapsulate only the names, but not the numbers
- of each entry of the table of contents,
-\item use the document class style for chapters and sections, but modify it only
- for subsections,
-\item do either of the above only for some portions of the table of contents.
-\end{enumerate}
-
-Here is how to proceed. One puts in the preamble:
-\begin{verbatim}
-\makeatletter
-\newcommand{\MyStandardTOC}{%
- \begingroup
- \let\savedpartline\l@part
- \let\savedchapterline\l@chapter %% remove if article/scrartcl class
- \let\savedsectionline\l@section
- \let\savedsubsectionline\l@subsection
- % and so on if \subsubsection, etc... is used
- %
- % for the book or article classes:
- \etocsetstyle{part}{}{}
- {\savedpartline{\etocnumber\hspace{1em}\etocname}{\etocpage}}{}%
- % for the scrbook or scrartcl classes:
- \etocsetstyle{part}{}{}
- {\savedpartline{\numberline{\etocnumber}\etocname}{\etocpage}}{}%
- % identical in book/article/scrbook/scrartcl classes:
- \etocsetstyle{chapter}{}{} %%% only for book and scrbook
- {\savedchapterline{\numberline{\etocnumber}\etocname}{\etocpage}}{}%
- \etocsetstyle{section}{}{}
- {\savedsectionline{\numberline{\etocnumber}\etocname}{\etocpage}}{}%
- \etocsetstyle{subsection}{}{}
- {\savedsubsectionline{\numberline{\etocnumber}\etocname}{\etocpage}}{}%
- % etc... if further sectioning units are used
- % (see the text for what to do with the memoir class)
- \etocstandarddisplaystyle % this is for the title, page-marks, etc...
- \tableofcontents
- \endgroup}
-\makeatother
-\end{verbatim}
-Of course if the document has only one table of contents then there is no need
-to put the commands inside a macro, or even inside a group.\footnote{and if
-moreover one just wants to keep the same layout as in the default, one may
-question why using \etoc... there is \emph{one} good reason: numbers and names
-are separately \texttt{hyperref} links, whereas normally there is only one link
-holding both the number and the name corresponding to one toc entry.} With these
-commands
-\etoc will construct a TOC completely identical to what would have been done by
-one of the document class: |article|, |book|, |scrartcl|, |scrbook|. \footnote{For the
-|memoir| class, one needs a bit more: each of the command \csa{booknumberline},
-\csa{partnumberline} and \csa{chapternumberline} will have to be saved with a
-\csa{let}, and, one then specifies:
-\centeredline{%
-\csa{etocsetstyle\{chapter\}\{\}\{\}\{\string\savedchapterline\{%
-\string\savedchapternumberline}}
-\hbox to \linewidth{\hfil\hfil \ttfamily
- \{\csa{etocnumber}\}\csa{etocname}\}\{\csa{etocpage}\}\}\{\}\hfil}
-(and analogously for |part|, respectively |book|).}
-The number and the name of each entry are each separately an |hyperref| link, as
-is always the case with \etoc, when not in compatibility mode. Replacing
-\csa{etocnumber} with \csa{etocthenumber} will give a TOC where the numbers are
-not links anymore, but the names still are. Or one may decide to use \csa{etocthename}
-and keep an hyperlinked number with
-\csa{etocnumber}.
-
-Here is a subtler example where one only marginally modifies the
-sections (adding color to the number and removing the |hyperref| link) and keeps
-the subsections as in the default, \emph{except} for those of one specific
-section, for which the layout is completely modified:
-\MyQuasiStandardTOC{\ref{toc:overview}}
-\bigskip
-This example only has sections and subsections, and the code used in \csa{MyStandardTOC} was:
-\begin{verbatim}
-\etocsetstyle{section}{}
- {\ifnum\etocthenumber=3
- \etocsetstyle{subsection}
- {\par\nopagebreak\begingroup
- \leftskip1.5em \rightskip\@tocrmarg \parfillskip\@flushglue
- \parindent 0pt \normalfont\normalsize\rmfamily\itshape
- % \columnsep1em
- % \begin{minipage}{\dimexpr\linewidth-\leftskip-\rightskip\relax}%
- % \begin{multicols}{2}%
- \etocskipfirstprefix}
- {\allowbreak\,--\,}
- {\etocname\ \textup{(\etocnumber)}}
- {.\par\endgroup}%
- % {.\par\end{multicols}\end{minipage}\par\endgroup}%
- \else
- \etocsetstyle{subsection}
- {}{}
- {\savedsubsectionline{\numberline{\etocnumber}\etocname}{\etocpage}}
- {}%
- \fi}
- {\savedsectionline{\numberline{{\color{cyan}\etocthenumber}}\etocname}{\etocpage}}
- {}%
-\end{verbatim}
-
-Notice the page head-mark added by this standard TOC. Sections and subsections
-are printed exactly as in the default (except for the subsections of one
-specific user-chosen section and except for the color of the section numbers),
-with no need to specify explicitely any length, font or other formatting
-instructions. But we had to examine the |scrartcl| sources to determine what to
-use for \csa{leftskip} and \csa{rightskip} for our customized section
-entries.
-
-
-\section{The TOC as a tree}\label{tocastree}
-
-Using |tikz|\footnote{\url{http://ctan.org/pkg/pgf}} and the package
-|forest|\footnote{\url{http://ctan.org/pkg/forest}} we shall display the table
-of contents of this part as a tree. The technique is to
-use the \etoc modified command \csa{tableofcontents} not for typesetting, but to
-prepare a macro, or rather here a \emph{token list} variable, with all the
-instructions to be executed later. \textsc{Leslie Lamport}'s book has no mention
-whatsoever of token lists, and \LaTeX{} gives the impression to not really
-expect the general user to ever hear about them (or delimited macros); this
-whole section and the next are thus for
-advanced users.
-
-Putting the \csa{etocnumber} and \csa{etocname}
-commands in \csa{treetok} would be of no use: to which number or name would they
-then refer to, in a delayed execution?
-
-We need to store, not the macro names, but the macro contents. And also we wish
-to maintain the correct |hyperref| hyperlinks.\footnote{This manual up to the
-version of May 14, 2013 used package |tikz-qtree| but there were problems with
-hyperlinks. No such problem arises either when using |forest| or the native
-|tikz| syntax for trees (which will be illustrated in the next section).} The
-hyperlink information put by \etoc inside \csa{etocname}, etc\dots, is just a
-pointer, not storable for later use; but the package provides
-\csa{etocthelinkednumber}, \csa{etocthelinkedname}, and \csa{etocthelinkedpage}
-whose contents contain the hyperlink in a form which can be stored and later
-reused.
-
-For this |forest| tree we have designed very special \etoc styles for sections
-and subsections. They use a token list register called |\treetok| and a
-macro |\appendtotok| whose r\^ole is to append to a given token list variable
-the contents of a macro given as second argument. All this will happen in
-reaction to a |\tableofcontents| command, but \emph{nothing} has yet been
-printed in the process.\footnote{There is always a \csa{par}, which here is not
-a problem, but can be suppressed if need be via the command \csb{etocinline} or
-its synonym \csb{etocnopar}.} This is the later job of a |forest| environment
-which will be given the contents of |\treetok|.
-
-\newtoks\treetok
-\newtoks\tmptok
-
-\newcommand*\appendtotok[2]{% #1=toks variable, #2=macro, expands once #2
- #1\expandafter\expandafter\expandafter
- {\expandafter\the\expandafter #1#2}}
-
-
-% 7 mars: j'utilise \etocthelinkedname défini à partir de 1.07f
-% mais bien sûr je sais que ça ne marche pas (sauf dans l'arbre pour le lien de
-% la section du bas) dans un QTree. Mais ça marche parfaitement dans un arbre
-% TikZ natif.
-
-% 9 septembre 2013: je remplace QTree par Forest, et il n'y a pas de problème
-% avec les hyperliens, ça marche out of the box (une fois que j'ai appris un peu
-% de sa syntaxe et de celle de TikZ).
-
-\newcommand*\PrepareSectionNode{%
- \tmptok {\centering\bfseries}%
- \appendtotok\tmptok\etocthelinkedname
- \edef\foresttreenode{ [{\noexpand\parbox{2cm}{\the\tmptok}}}%
-}
-
-% 7 mars: j'utilise maintenant \etocthelinkedname
-\newcommand*{\PrepareSubsectionNode}{%
- \tmptok {\raggedright}% j'ai essayé aussi avec \sloppy
- \appendtotok\tmptok\etocthelinkedname
- \edef\foresttreenode{ [{\noexpand\parbox{6cm}{\the\tmptok}}}%
-}
-
-\etocsetstyle{section}
- {\etocskipfirstprefix}
- {\appendtotok\treetok{ ]}}
- {\PrepareSectionNode \appendtotok\treetok\foresttreenode}
- {\appendtotok\treetok{ ]}}
-
-\etocsetstyle{subsection}
- {\etocskipfirstprefix}
- {\appendtotok\treetok{ ]}}
- {\PrepareSubsectionNode \appendtotok\treetok\foresttreenode}
- {\appendtotok\treetok{ ]}}
-
-\etocsettocstyle
- {\treetok{[{\hyperref[part:overview]{Overview}}}}
- {\global\appendtotok\treetok{ ]}}
-
-
-% 11 octobre
-% forest ne veut pas @\the\treetok avec un \treetok vide, donc
-% il faut lui donner une valeur par défaut.
-\treetok{[{run latex again}]}
-
-% 12 octobre
-% pour que varioref fonctionne bien, je dois mettre la \tableofcontents
-% au plus près de l'environnement forest
-
-\begin{figure}[th!]\centering
- \etocsetnexttocdepth{subsection}
- \tableofcontents \label{toc:forest}\ref{toc:overview}
- \hypersetup{hidelinks}%
- \bracketset{action character=@}
- \begin{forest}
- for tree={anchor=center,child anchor=west,
- grow'=east,draw,thick,
- edge={draw,thick,dashed,color=teal}},
- where={level()==1}{circle,thick,fill=blue!5,
- before computing xy={l=3cm}}{},
- where={level()==2}{fill=red!5,
- before computing xy={l=6cm}}{},
- % je trouve ce truc pour une position absolue. OK!
- rectangle, thick, fill=cyan!5, inner sep=6pt,
- @\the\treetok
- \end{forest}
- \centeredline{A table of contents displayed as a |forest| tree.}
-\end{figure}
-
-
-The resulting tree has been put in a \hyperref[toc:forest]{float}, which
-appears \vpageref[above]{toc:forest}. Here is the
-code used for its production:
-\begin{verbatim}
-\newtoks\treetok
-\newtoks\tmptok
-
-\newcommand*\appendtotok[2]{% #1=toks variable, #2=macro, expands once #2
- #1\expandafter\expandafter\expandafter
- {\expandafter\the\expandafter #1#2}}
-
-\newcommand*\PrepareSectionNode{%
- \tmptok {\centering\bfseries}%
- \appendtotok\tmptok\etocthelinkedname
- \edef\foresttreenode{ [{\noexpand\parbox{2cm}{\the\tmptok}}}%
-}
-
-\newcommand*{\PrepareSubsectionNode}{%
- \tmptok {\raggedright}%
- \appendtotok\tmptok\etocthelinkedname
- \edef\foresttreenode{ [{\noexpand\parbox{6cm}{\the\tmptok}}}%
-}
-
-\etocsetstyle{section}
- {\etocskipfirstprefix}
- {\appendtotok\treetok{ ]}}
- {\PrepareSectionNode \appendtotok\treetok\foresttreenode}
- {\appendtotok\treetok{ ]}}
-
-\etocsetstyle{subsection}
- {\etocskipfirstprefix}
- {\appendtotok\treetok{ ]}}
- {\PrepareSubsectionNode \appendtotok\treetok\foresttreenode}
- {\appendtotok\treetok{ ]}}
-
-\etocsettocstyle
- {\treetok{[{\hyperref[part:overview]{Overview}}}}
- {\global\appendtotok\treetok{ ]}}
-
-% forest does not like @\the\treetok if \treetok is empty. On first latex
-% run, this will be the case because the TOC style defined above will not
-% have been executed, as the label {toc:overview} does not refer to a valid
-% TOC yet. So we must give a safe default value to \treetok
-\treetok{[{run latex again}]}
-
-\begin{figure}[th!]\centering
- \etocsetnexttocdepth{subsection}
- \tableofcontents \label{toc:forest}\ref{toc:overview}
- \hypersetup{hidelinks}%
- \bracketset{action character=@}
- \begin{forest}
- for tree={anchor=center,child anchor=west,
- grow'=east,draw,thick,
- edge={draw,thick,dashed,color=teal}},
- where={level()==1}{circle,thick,fill=blue!5,
- before computing xy={l=3cm}}{},
- where={level()==2}{fill=red!5,
- before computing xy={l=6cm}}{},
- rectangle, thick, fill=cyan!5, inner sep=6pt,
- @\the\treetok
- \end{forest}
-\end{figure}
-\end{verbatim}
-
-Why |\hypersetup{hidelinks}|? as explained in
-\autoref{ssec:hidelinks}, I prefer the links in TOCs not to be
-colorized, nor framed, so this document inserts a command
-%\csa{hypersetup}\texttt{\{hidelinks\}} % ok pour hyphénation
-%\csa{hypersetup}|{hidelinks}| % pas ok
-|\hypersetup{hidelinks}| % ok maintenant 12 octobre 2013
- in the |.toc| file. But at the time the
-|\treetok| contents are unpacked the |\hyperlink| commands
-originating in
-|\etocthelinkedname|, etc\dots{} will be executed in the normal
-environment for links (which, in this document, is to colorize
-them). Rather than having \etoc's code try to guess what the current ``style''
-for links is (a concept not really provided by |hyperref| it
-seems) and store it in |\etocthelinkedname|, etc\dots, I opted for
-the simpler solution to leave it up to the user to recreate
-whatever conditions are desired. So here it is necessary to re-issue
-|\hypersetup{hidelinks}| in the |figure| environment.
-
-There are some other examples in this documentation where
-|\tableofcontents| is used to prepare material for later
-typesetting:
-\begin{itemize}
-\item printing the statistics at the start of each Part (see
- \autoref{ssec:statistics}) is done using save boxes (so the problem of the
- appearance of the links does not arise then).
-\item the typesetting of the TOC as a table in the pre-|1.08| way (see
- \autoref{ssec:tocastableold}); there we also have to issue
- |\hypersetup{hidelinks}| after having collected the names, numbers and
- page numbers in a token list register.
-\item and the two additional tree examples in the next section.
-\end{itemize}
-
-
-\section{The TOC as a molecule}\label{ssec:molecule}
-
-It is also possible to construct a TOC tree obeying the TikZ
-syntax for trees: but this is a more complicated task for the
-\etoc line styles for reasons related to the way braces are
-handled by \TeX{} (they need, when filling up the token list to be
-always balanced at each step, else complicated tricks must be
-employed.)
-
-The simplest strategy is to allocate a token list (or use a macro) for each
-level used: we may need a \csa{parttok}, a \csa{chaptertok}, a
-\csa{sectiontok} and a \csa{subsectiontok}, to help in the task of filling
-up the total \csa{treetok}. As we are interested here in the table of
-contents of this (or another) document part, only a \csa{sectiontok} and a
-\csa{subsectiontok} will be needed.
-
-
-\begin{verbatim}
-% \newtoks\treetok % already done earlier
-\newtoks\sectiontok \newtoks\subsectiontok \newcommand*{\treenode}{}
-
-\newcommand*{\appendchildtree}[2]{% token list t1 becomes: t1 child {t2}
- \edef\tmp{\the#1 child {\the#2}}%
- #1\expandafter{\tmp}%
-}
-\newcommand*{\preparetreenode}{%
- \tmptok\expandafter{\etocthelinkednumber}% expanded one time (mandatory)
- \edef\treenode{node {\the\tmptok}}%
-}
-
-\etocsetstyle{section}
- {\etocskipfirstprefix}
- {\appendchildtree\treetok\sectiontok}
- {\preparetreenode \sectiontok\expandafter{\treenode}}
- {\appendchildtree\treetok\sectiontok}
-
-\etocsetstyle{subsection}
- {\etocskipfirstprefix}
- {\appendchildtree\sectiontok\subsectiontok}
- {\preparetreenode \subsectiontok\expandafter{\treenode}}
- {\appendchildtree\sectiontok\subsectiontok}
-
-\etocsettocstyle
- {\treetok{\node {\hyperref[part:overview]{Overview}}}}
- {\global\appendtotok\treetok{ ;}}
-
-% moved to the inside of the figure environment for correct \pageref{toc:molecule}
-% \etocsetnexttocdepth{subsection}
-% \tableofcontents \label{toc:molecule} \ref{toc:overview}
-\end{verbatim}
-
-\newtoks\sectiontok
-\newtoks\subsectiontok
-\newcommand*\treenode {}
-
-\newcommand*{\appendchildtree}[2]{% token list t1 becomes: t1 child {t2}
- \edef\tmp{\the#1 child {\the#2}}%
- #1\expandafter{\tmp}%
-}
-
-\newcommand*{\preparetreenode}{%
- \tmptok\expandafter{\etocthelinkednumber}%
- \edef\treenode{node {\the\tmptok}}%
-}
-
-\etocsetstyle{section}
- {\etocskipfirstprefix}
- {\appendchildtree\treetok\sectiontok}
- {\preparetreenode
- \sectiontok\expandafter{\treenode}}
- {\appendchildtree\treetok\sectiontok}
-
-\etocsetstyle{subsection}
- {\etocskipfirstprefix}
- {\appendchildtree\sectiontok\subsectiontok}
- {\preparetreenode
- \subsectiontok\expandafter{\treenode}}
- {\appendchildtree\sectiontok\subsectiontok}
-
-\etocsettocstyle
- {\treetok{\node {\hyperref[part:overview]{Overview}}}}
- {\global\appendtotok\treetok{ ;}}
-
-\begin{figure}[th!]\centering
-\etocsetnexttocdepth{subsection}
- \tableofcontents \label{toc:molecule}\ref{toc:overview}
- \hypersetup{hidelinks}%
- \begin{tikzpicture}
- [grow cyclic,
- level 1/.style={level distance=4cm,sibling angle=72},
- level 2/.style={level distance=2cm,sibling angle=60},
- every node/.style={ball color=red,circle,text=SkyBlue},
- edge from parent path={[dashed,very thick,color=cyan]
- (\tikzparentnode) --(\tikzchildnode)}]
- \the\treetok
- \end{tikzpicture}
- \centeredline{A table of contents as a ``molecule.''}
-\end{figure}
-
-% Pour que \pageref fonctionne correctement, je dois mettre
-% le \tableofcontents dans la figure.
-
-
-The |\tableofcontents| command appears just above the
-|tikzpicture| environment in a figure float (for the label of the
-table of contents to certainly
-refer to the same page as the one where the picture will actually be printed).
-We thus get the table of contents as a ``\hyperref[toc:molecule]{molecule}'',
-which
-appears \vpageref[above]{toc:molecule}. Here is the code actually
-producing it:
-\begin{verbatim}
-\begin{figure}[th!]\centering
- \etocsetnexttocdepth{subsection}
- \tableofcontents \label{toc:molecule} \ref{toc:overview}
- \hypersetup{hidelinks}%
- \begin{tikzpicture}
- [grow cyclic,
- level 1/.style={level distance=4cm,sibling angle=72},
- level 2/.style={level distance=2cm,sibling angle=60},
- every node/.style={ball color=red,circle,text=SkyBlue},
- edge from parent path={[dashed,very thick,color=cyan]
- (\tikzparentnode) --(\tikzchildnode)}]
- \the\treetok
- \end{tikzpicture}
-\end{figure}
-\end{verbatim}
-
-
-
-This \hyperref[toc:molecule]{TikZ TOC} is fully hyperlinked, like the
-previous
-\hyperref[toc:forest]{Forest TOC}.
-
-
-\etocsettocstyle
- {\treetok{\node {\autoref{part:globalcmds}}}}
- {\global\appendtotok\treetok{ ;}}
-
-\etocsetnexttocdepth {subsection}
-\tableofcontents \ref{toc:globalcmds}
-
-\noindent
-\parbox{4cm}{\hypersetup{hidelinks}%
- \begin{tikzpicture}
- [grow cyclic,
- level 1/.style={level distance=2.5cm,sibling angle=60},
- level 2/.style={level distance=1cm,sibling angle=45},
- every node/.style={ball color=red!50,circle,text=black},
- edge from parent path={[very thick,color=cyan]
- (\tikzparentnode) --(\tikzchildnode)}]
- \the\treetok
- \end{tikzpicture}}%
-\begin{minipage}{\dimexpr\linewidth-4cm\relax}
- On the side, the (fully hyperlinked) table of contents of
- \autoref{part:globalcmds}.
- \def\MacroFont{\ttfamily\small\hyphenchar\font-1 \baselineskip10pt\relax}%
-\begin{verbatim}
-\etocsettocstyle
- {\treetok{\node {\autoref{part:globalcmds}}}}
- {\global\appendtotok\treetok{ ;}}
-\etocsetnexttocdepth {subsection}
-\tableofcontents \ref{toc:globalcmds}
-\noindent
-\parbox{4cm}{\hypersetup{hidelinks}%
- \begin{tikzpicture}
- [grow cyclic,
- level 1/.style={level distance=2.5cm,sibling angle=60},
- level 2/.style={level distance=1cm,sibling angle=45},
- every node/.style={ball color=red!50,circle,text=black},
- edge from parent path={[very thick,color=cyan]
- (\tikzparentnode) --(\tikzchildnode)}]
- \the\treetok
- \end{tikzpicture}}%
-...
-\end{verbatim}
-\end{minipage}
-
-
-\section{The TOC as a table}
-\label{sec:tocastable}
-
-With release |1.08| it is easier to typeset a TOC as a table. It is
-possible to open a tabular in the title part of the TOC (first argument
-to \csb{etocsettocstyle}) and then close it after the contents (second
-argument to \csb{etocsettocstyle}), and specify in the line styles how
-to use the tabulation |&| and tabular end of row |\\|. There are some
-conditions and a few caveats:
-
-\begin{enumerate}
-\item it is mandatory to issue \csb{etocglobaldefs} for \etoc's
- definitions to have global scope,
-\item use \csb{etocthelinkedname},
- \csb{etocthelinkednumber} and \csb{etocthelinkedpage} in preference to
- \csb{etocname}, \csb{etocnumber}, \csb{etocpage}: if |hyperref| is
- present, this is mandatory, and if it is not present, it does not hurt
- and gives the same output,
-\item it is impossible to start one of the \meta{start}, \meta{prefix},
- \meta{contents} or \meta{finish} specification with a sole |\hline|,
- \emph{i.e.} one not preceded by a |\\| (it is however possible to put
- |\\| at the end of \meta{prefix} and the |\hline| at the start of
- \meta{contents}).
-\item as is explained next, it is recommended to use the |\\| at
- the start of the \meta{prefix} or \meta{contents}
- specifications to close the \emph{previous} row, not at the end
- to close the \emph{current} row; when the TOC is a partial one (a
- \csa{localtableofcontents}) this advice becomes (in almost all
- situations) mandatory.
-\end{enumerate}
-
-Here is an example of a TOC as a |longtable|, as is possible relatively
-simply now with |1.08|. The code follows.
-
-\begingroup
-\etocglobaldefs % necessary for \etocthename etc... to survive &
-
-% we must use \etocthelinkednumber and not \etocnumber if hyperref is
-% present, because \etocnumber does not incorporate a fully expanded
-% hyperlink destination specification, hence that part gets lost when a
-% & is encountered
-
-% observe the locations of the \\
-\etocsetstyle{part}
- {}
- {\\\hline}
- {\strut\etocthelinkednumber &\bfseries\etocthelinkedname
- &\etocthelinkedpage }
- {}
-
-\etocsetstyle{section}
- {}
- {\etociffirst{\etocifnumbered{\\\hline}{\\\hline\hline}}{\\}}
- {\etocthelinkednumber&\etocthelinkedname &\etocthelinkedpage }
- {}
-
-\etocsetstyle{subsection}
- {}
- {\\}
- {&\makebox[1cm][c]{\etocthelinkednumber}%
- \parbox[t]{\dimexpr6cm-\tabcolsep\relax}
- {\sloppy\itshape\etocthelinkedname\strut}%
- &\itshape\etocthelinkedpage }
- {}
-
-\etocsettocstyle
- {\hypersetup{hidelinks}%
- \begin{longtable}{|>{\bfseries}c|p{7cm}|r|}
- \hline
- \multicolumn{3}{|c|}{\Large\bfseries\strut\MakeUppercase{\contentsname}}%
- }
- {\\\hline\end{longtable}}
-
-\etocsetnexttocdepth {subsection}
-
-\tableofcontents
-\endgroup
-
-\begin{verbatim}
-\begingroup
-\etocglobaldefs % necessary for \etocthename etc... to survive &
-
-% we must use \etocthelinkednumber and not \etocnumber if hyperref is
-% present, because \etocnumber does not incorporate a fully expanded
-% hyperlink destination specification, hence that part gets lost when a
-% & is encountered
-
-% observe the locations of the \\
-\etocsetstyle{part}
- {}
- {\\\hline}
- {\strut\etocthelinkednumber &\bfseries\etocthelinkedname
- &\etocthelinkedpage }
- {}
-
-\etocsetstyle{section}
- {}
- {\etociffirst{\etocifnumbered{\\\hline}{\\\hline\hline}}{\\}}
- {\etocthelinkednumber&\etocthelinkedname &\etocthelinkedpage }
- {}
-
-\etocsetstyle{subsection}
- {}
- {\\}
- {&\makebox[1cm][c]{\etocthelinkednumber}%
- \parbox[t]{\dimexpr6cm-\tabcolsep\relax}
- {\sloppy\itshape\etocthelinkedname\strut}%
- &\itshape\etocthelinkedpage }
- {}
-
-\etocsettocstyle
- {\hypersetup{hidelinks}%
- \begin{longtable}{|>{\bfseries}c|p{7cm}|r|}
- \hline
- \multicolumn{3}{|c|}{\Large\bfseries\strut\strut TABLE OF CONTENTS}%
- }
- {\\\hline\end{longtable}}
-
-\etocsetnexttocdepth {subsection}
-
-\tableofcontents
-\endgroup
-\end{verbatim}
-
-Examining the code above the reader will wonder why the |\\| are
-always given first in \meta{prefix+contents} and not, as is more
-intuitive, rather last. In many cases one may indeed construct
-TOC-as-tables with the |\\| located at the end of the style
-specifications (but almost never for a \csa{localtableofcontents}).
-The problem in the previous example was with the positioning of the
-|\hline|'s.
-
-Due to technical aspects of how \TeX{} constructs alignments any
-definition or assignment done after an |\\| starts a new row, and
-thus makes |\hline| an illegal token (this shows as a |misplaced
-\noalign| error.) Not only does \etoc have to do such definitions
-to construct \csb{etocname} etc..., it is furthermore the case that
-some packages put things in the |.toc| file and as a result there
-is never any guarantee that between two \csa{contentsline} there
-will not be such a token like |\relax| which in the contexts of
-alignments forces \TeX{} to start a cell and thus makes it
-impossible then to insert an |\hline|.
-
-The safest way is to start with an |\\| each line style
-specification. We had a little problem with the fact that we wanted
-parts not only to have a rule above them (easy, they do |\\\hline|)
-but also below them: after each part there is a section, thus the
-section which are first of their kind used the \csb{etociffirst}
-conditional branching. The attentive reader will notice one last
-subtlety: the title was supposed to be followed not by one, but by
-two |\hline|'s.
-
-To solve this we could have used a one-time macro redefining itself, but
-we noticed that the title was followed by the unnumbered Abstract, thus
-the \csb{etocifnumbered} switch came to the rescue.
-
-Last technical note: because we put the |\\| inside the branches, there
-was no need to employ the expandable variants \csb{etocxiffirst} and
-\csb{etocxifnumbered}.
-
-For the hardliner's old way of obtaining the exact same result, see
-\autoref{ssec:tocastableold}.
-
-Here is also a much simpler example. It is a local table of
-contents.
-
-\begin{center}
-\etocsetstyle{section}
- {}
- {\etociffirst{\\\hline\hline}{\\\hline}}
- {\etocthelinkedname&
- \etocthelinkednumber&
- \etocthelinkedpage }
- {}
-
-\etocsettocstyle
- {\hypersetup{hidelinks}\begin{tabular}{|p{4cm}|c|c|}\hline
- \multicolumn{1}{|c|}{\bfseries Section}&
- \bfseries number&
- \bfseries page}
- {\\\hline\end{tabular}}
-
-\etocglobaldefs % MANDATORY !!
-\etocsetnexttocdepth{1}
-
-\tableofcontents\ref{toc:overview}
-\end{center}
-
-\begin{verbatim}
-\begin{center}
-\etocsetstyle{section}
- {}
- {\etociffirst{\\\hline\hline}{\\\hline}}
- {\etocthelinkedname&
- \etocthelinkednumber&
- \etocthelinkedpage }
- {}
-
-\etocsettocstyle
- {\hypersetup{hidelinks}\begin{tabular}{|p{4cm}|c|c|}\hline
- \multicolumn{1}{|c|}{\bfseries Section}&
- \bfseries number&
- \bfseries page}
- {\\\hline\end{tabular}}
-
-\etocglobaldefs % MANDATORY !!
-\etocsetnexttocdepth{1}
-
-\tableofcontents\ref{toc:overview}
-\end{center}
-\end{verbatim}
-
-\subsection{The commands \csbhyp{etocglobaldefs} and \csbhyp{etoclocaldefs}}
-\label{etocglobaldefs}
-\label{etoclocaldefs}
-
-In \LaTeX{} the meaning of a command defined via |\newcommand\foo{...}| inside
-an environment (or group) vanishes from \TeX's memory on exit from this
-environment (or group). At times however it is needed to make definitions with
-global scope, for this \TeX{} has the primitive prefix |\global|.
-
-By default \etoc's definitions of \csb{etocname} etc... are local. This causes
-problems in certain contexts such as seen here with TOC as tables, but also
-with |enumitem| \emph{inline} variants of its standard environments, because
-the command |\item| then closes a group.
-
-After \csb{etocglobaldefs}, \etoc will make its definitions of \csb{etocname}
-etc... have global scope. For normal use this is not necessary. It does not hurt
-either to activate it systematically.
-
-To return to the default, use \csb{etoclocaldefs}. Note that both
-\csb{etocglobaldefs} and \csb{etoclocaldefs} actions are local to the
-environment or group where they are used.
-
-
-\clearpage
-\etocdepthtag.toc {linestyles}
-
-\part{Commands for the toc line styles}
-\label{part:linestyles}
-
-\thispartstats
-
-\etocsetstyle{section}
-{\begin{enumerate}[leftmargin=.75cm, label=\etocifnumbered
- {{\fboxrule1pt\fcolorbox{green}{white}{\etocnumber}}}{}]}
-% Dec 7, 2012. I hit upon a problem whose origin I found was
-% with xcolor, as xcolor modifies \fbox
-% (try \section{\fbox{A}} with and without xcolor). The fix
-% was to \protect the \fbox used in the |enumitem| label.
-% Strangely enough, with |hyperref| active, the problem did
-% not show up. Anyhow I now use \fcolorbox rather than \fbox
-% and there is no problem anymore. Also I don't have now to
-% use \normalcolor which already needed protection.
-{\normalsize\bfseries\rmfamily\item}
-{\etocname{} (page \etocpage)}
-{\end{enumerate}}
-
-\etocsetstyle{subsection}
-{\begin{enumerate}[leftmargin=0cm, label=\etocnumber]}
-{\normalfont \item}
-{\etocname{} (p.~\etocpage)}
-{\end{enumerate}}
-
-\etocsetstyle{subsubsection}
-{\par\nobreak\begingroup\normalfont\footnotesize\itshape\etocskipfirstprefix}
-{\allowbreak\,--\,}
-{\etocname}
-{.\hfil\par\endgroup\pagebreak[3]}
-
-% 27 janvier 2013 22:30
-% je définis les macros (non protégées)
-% \etocthename, \etocthenumber, \etocthepage
-
-\etocruledstyle[1]{\etocfontminusone\color{green}%
- \fboxrule1pt\fboxsep1ex
- \framebox[\linewidth]
- {\normalcolor\hss Contents of \autoref{part:linestyles}\hss}}
-
-\localtableofcontents \label{toc:a}
-
-\section{The \csbhyp{etocsetstyle} command}
-\label{etocsetstyle}
-
-\subsection{The \csbhyp{etocname} and \csbhyp{etocpage} commands}
-\label{etocname}
-\label{etocpage}
-
-Let us explain how \etoc was used to produce the table of
-contents displayed at the beginning of this second part.
-This
-is a local table of contents, and we used the command \localtoc.
-
-
-We shall distinguish between the \emph{line styles} and the
-\emph{toc display style}. The line styles were (essentially)
-obtained in the following manner:%
-\footnote{the present document has
- {\ttfamily\string\renewcommand\string{%
- \string\familydefault\string}\string{\string\sfdefault\string}}
- in its preamble, hence \csa{normalfont} switches to the
- |sans| typeface; so in the section line-style, I wrote
- \csa{rmfamily} instead.}
-
-\begingroup\small
-\begin{verbatim}
-\etocsetstyle{section}
-{\begin{enumerate}}
-{\normalsize\bfseries\rmfamily\item}
-{\etocname{} (page \etocpage)}
-{\end{enumerate}}
-
-\etocsetstyle{subsection}
-{\begin{enumerate}}
-{\normalfont\item}
-{\etocname{} (p.~\etocpage)}
-{\end{enumerate}}
-
-\etocsetstyle{subsubsection}
-{\par\nobreak\begingroup\normalfont
- \footnotesize\itshape\etocskipfirstprefix}
-{\allowbreak\,--\,}
-{\etocname}
-{.\hfil\par\endgroup\pagebreak[3]}
-\end{verbatim}
-\endgroup
-
-These provisory style definitions rely on the automatic
-numbering generated by the |enumerate| environments but it is
-much better to use the further command \csb{etocnumber} inside
-the item label, which gives the real thing. The improved
-definitions will thus be explained later.
-
-With this style, one would have
-to be imaginative to design something then for paragraph and
-subparagraph entries! perhaps as superscripts? Well, usually
-one does not need paragraphs and subparagraphs numbered and
-listed in the TOC, so our putative user here chose a design
-where no provision is made for them and added the definitive:
-\begin{verbatim}
-\etocsetstyle{paragraph}{}{}{}{}
-\etocsetstyle{subparagraph}{}{}{}{}
-\end{verbatim}
-This is also the situation with the default package line styles!
-
-Each \csb{etocsetstyle} command has five mandatory arguments:\\
-\hbox to \linewidth
-{\hfil\csb{etocsetstyle}\color{blue}\marg{levelname}%
- \marg{start}\marg{prefix}\marg{contents}\marg{finish}\hfil}
-The initially recognized \meta{levelname}'s are the sectioning
-levels of the standard document classes: from \emph{part} (or
-\emph{book} which is used by the |memoir| class) down to
-\emph{subparagraph}.
-
-The \meta{start} code is executed when a toc entry of that level is
-encountered and the previous one was at a higher level. The
-\meta{finish} code is executed when one again encounters a higher
-level toc entry. In the mean-time all entries for that level are
-typeset by executing first the \meta{prefix} code and then the
-\meta{contents} code.
-
-The (robust) commands \csb{etocname}, \csb{etocnumber} and \csb{etocpage} are
-provided for use inside the \meta{prefix} and \meta{contents} parts of the
-\csa{etocsetstyle} specification. They represent of course, the name, number,
-and page number of the corresponding toc entry. If package |hyperref| is
-active in the document and has added hyperlinks to the TOC data, then these
-links are kept in the commands \csa{etocname}, \csa{etocnumber} and
-\csa{etocpage} (this last one will have a link only if |hyperref| was passed
-option \emph{linktoc=all}.)
-
-\subsection{The \csbhyp{etocskipfirstprefix} and \csbhyp{etociffirst} commands}
-\label{etocskipfirstprefix}
-\label{etociffirst}
-\label{etocxiffirst}
-
-The chosen |subsubsection| style made use of the command
-\csb{etocskipfirstprefix}, which instructs \etoc to \emph{not} use
-for the first item the specified \meta{prefix} code.\footnote{With
-versions earlier than |1.08| it had to be the very last token in
-the \meta{start} code. It may now appear anywhere therein.}
-
-The command \csb{etociffirst}\marg{YES CODE}\marg{NO CODE} (new
-with |1.08|) is a more flexible way to customize the \meta{prefix}
-(and \meta{contents}) specifications. It executes the \meta{YES
-CODE} branch if this is the first unit at that level (inside a
-lower level) and the \meta{NO CODE} if not. This is a robust
-command which survives to expansion (for example in an |enumitem| label).
-
-The variant \csb{etocxiffirst} does the same, but is expandable.
-
-
-\subsection{The \csbhyp{etocnumber} command}
-\label{etocnumber}
-
-So far, our specifications would use the numbering generated
-by the |enumerate| environments, but of course we generally want
-the actual numbers as found in the |.toc| file. This is
-available via the \csb{etocnumber} command. To get the labels
-in the |enumerate| list to use it we can proceed with the
-syntax {\ttfamily label=\char32} from the package |enumitem|:
-\begin{verbatim}
-\etocsetstyle{section}
-{\begin{enumerate}[label=\etocnumber]}
-{\normalsize\bfseries\rmfamily\item}
-{\etocname{} (page \etocpage)}
-{\end{enumerate}}
-\end{verbatim}
-Rather than just \csa{etocnumber} we then used something like
-|\fbox{\etocnumber}|. Note that \csa{etocnumber} is a robust
-command which explains why it can be used inside the label specification
-without needing an added |\protect|.
-
-
-\subsubsection{The \csbhyp{etocifnumbered} switch}
-\label{etocifnumbered}
-\label{etocxifnumbered}
-
-The \csa{fbox} would give an unaesthetic result in the case of
-an unnumbered section (which ended up in the table of
-contents via an \csa{addcontentsline} command).\footnote{as
- seen we use \csa{fcolorbox} rather than \csa{fbox}. Due
- to some redefinition made by package |xcolor|, had we used
- \csa{fbox} (and not used |hyperref|) we would have needed
- \csa{protect}\csa{fbox}.}
-
-The \csb{etocifnumbered}\marg{A}\marg{B} command executes
-\meta{A} if the number exists, and \meta{B} if not. So we use
-it in the code which was finally chosen for the |section| level:
-\begin{verbatim}
-\etocsetstyle{section}
-{\begin{enumerate}[leftmargin=.75cm, label=\etocifnumbered
- {{\fboxrule1pt\fcolorbox{green}{white}{\etocnumber}}}{}]}
-{\normalsize\bfseries\rmfamily\item}
-{\etocname{} (page \etocpage)}
-{\end{enumerate}}
-
-\etocsetstyle{subsection}
-{\begin{enumerate}[leftmargin=0cm, label=\etocnumber]}
-{\normalfont \item}
-{\etocname{} (p.~\etocpage)}
-{\end{enumerate}}
-\end{verbatim}
-
-If we had changed only the |section| level, and not the
-|subsection| level, an error on compilation would have occurred
-because the package style for subsections expects to start `in
-vertical mode'. An additional \csa{par} token in the
-\meta{contents} part of the |section| level would have fixed
-this: |{...(page \etocpage)\par}|.
-
-The command \csb{etocifnumbered} is robust; \csb{etocxifnumbered}
-(new with |1.08|) has the same effect but is expandable.
-
-
-\subsection{The \csbhyp{etocthename}, \csbhyp{etocthenumber}, and
-\csbhyp{etocthepage} commands}
-\label{etocthename}
-\label{etocthenumber}
-\label{etocthepage}
-
-It is sometimes desirable to have access to the name, number and page
-number without the hyperref link data: something similar to the starred
-variant of the \csa{ref} command, when package |hyperref| is used. For
-example one may wish to use the unit or page number in some kind of
-numeric context, or change its formatting. This is provided by
-\csb{etocthename}, \csb{etocthenumber}, and \csb{etocthepage}.
-
-
-These commands are not protected, so in moving argument
-contexts (for example in a label specification) they should be
-preceded by |\protect|.
-
-\subsection{The \csbhyp{etoclink} command}
-\label{etoclink}
-
-The command \csb{etoclink}\marg{linkname} can be used in the line style
-specifications in a manner analogous to the argument-less
-commands \csa{etocname}, \csa{etocnumber} and \csa{etocpage}. It
-creates a link (if such a link was added by |hyperref| to the
-|.toc| file entry) whose destination is the corresponding document
-unit and whose name is the given argument.
-Hence |\etoclink{\etocthename}| is like the original
-|\etocname|.
-Notice that if |hyperref| was not instructed to put a link in the page number
-(via
-its option \emph{linktoc=all}) then \etoc's \csa{etocpage} contains no link
-either, but |\etoclink{\etocthepage}| does.
-
-
-The command \csa{etoclink} is robust.
-
-\subsection{The \csbhyp{etocthelinkedname}, \csbhyp{etocthelinkednumber},
-\csbhyp{etocthelinkedpage} and \csbhyp{etocthelink} commands}
-\label{etocthelinkedname}
-\label{etocthelinkednumber}
-\label{etocthelinkedpage}
-\label{etocthelink}
-
-
-This is for advanced uses by advanced users.
-The \csa{etocthename} macro has
-been mentioned before; using it in instructions such as
-|\global\let\lastone\etocthename| in an \etoc line style will
-define the macro |\lastone| to expand to the last name seen at the
-corresponding level. But no facilities was previously available to
-do the same with the link data.
-
-The package now provides \csa{etocthelinkedname} to do the similar
-thing, with the link data included. It was used in this
-documentation when doing the
-\hyperref[tocastree]{examples with trees}.
-
-Also provided with the similar goal: \csa{etocthelinkednumber},
-\csa{etocthelinkedpage} (which contains a link only if |hyperref|
-added one to the page number) and \csa{etocthelink}\marg{linkname}
-which allows to make a link with an arbitrary name.
-
-All these commands are fragile.
-
-Example of \begingroup
- \etocsetstyle {section}
- {\begin{itemize*}[itemjoin={{; }}, itemjoin*={{, and }}]}
- {\global\let\TmpEtocNumber\etocthelinkednumber
- \global\let\TmpEtocName\etocthelinkedname
- \global\let\TmpEtocPage\etocthelinkedpage }
- {\item [{\bfseries\TmpEtocNumber.}]\TmpEtocName\
- (\emph{p. \TmpEtocPage})}
- {\end{itemize*}.}%
- \etocsetnexttocdepth {section}%
- \etocsettocstyle {a table of contents done as an inline
- \texttt{enumitem} environment: }{}%
- \etocinline\tableofcontents \ref{toc:globalcmds}
-\endgroup
-
-\begin{verbatim}
-Example of \begingroup
- \etocsetstyle {section}
- {\begin{itemize*}[itemjoin={{; }}, itemjoin*={{, and }}]}
- {\global\let\TmpEtocNumber\etocthelinkednumber
- \global\let\TmpEtocName\etocthelinkedname
- \global\let\TmpEtocPage\etocthelinkedpage }
-% (the above needed as \item closes a group in enumitem inline environments)
- {\item [{\bfseries\TmpEtocNumber.}]\TmpEtocName\
- (\emph{p. \TmpEtocPage})}
- {\end{itemize*}.}%
- \etocsetnexttocdepth {section}%
- \etocsettocstyle {a table of contents done as an inline
- \texttt{enumitem} environment: }{}%
- \etocinline\tableofcontents \ref{toc:globalcmds}
-\endgroup
-\end{verbatim}
-
-\etoc |1.08| offers a simpler way to the same result:
-\begin{verbatim}
-Example of
-\begingroup\etocglobaldefs % <-- NEW mit etoc 1.08.
- \etocsetstyle {section}
- {\begin{itemize*}[itemjoin={{; }}, itemjoin*={{, und }}]}
- {}
- {\item [{\bfseries\etocthelinkednumber.}]
- \etocthelinkedname\ (\emph{p. \etocthelinkedpage })}
- {\end{itemize*}.}%
- \etocsetnexttocdepth {section}%
- \etocsettocstyle {a table of contents done as an inline
- \texttt{enumitem} environment: }{}%
- \etocinline\tableofcontents \ref{toc:globalcmds}
-\end{verbatim}
-Example of
-\begingroup\etocglobaldefs % <-- NEW mit etoc 1.08.
- \etocsetstyle {section}
- {\begin{itemize*}[itemjoin={{; }}, itemjoin*={{, und }}]}
- {}
- {\item [{\bfseries\etocthelinkednumber.}]
- \etocthelinkedname\ (\emph{p. \etocthelinkedpage })}
- {\end{itemize*}.}%
- \etocsetnexttocdepth {section}%
- \etocsettocstyle {a table of contents done as an inline
- \texttt{enumitem} environment: }{}%
- \etocinline\tableofcontents \ref{toc:globalcmds}
-\endgroup
-
-\section{The \csbhyp{etocsetlevel} command}
-\label{etocsetlevel}
-
-As already explained in \autoref{part:surprising}, one
-can inform \etoc of a level to associate to a given sectioning
-command with \csa{etocsetlevel}. For example:
-\begin{verbatim}
-\etocsetlevel{cell}{0}
-\etocsetlevel{molecule}{1}
-\etocsetlevel{atom}{2}
-\etocsetlevel{nucleus}{3}
-\end{verbatim}
-In compatibility mode, it will be assumed that the macros |\l@cell|,
-|\l@molecule|, ..., have been defined somewhere either by the user or a class:
-doing only |\etocsetlevel| is not enough for the corresponding level to work
-out-of-the-box in compatibility mode.
-
-However, if no table of contents is typeset in compatibility mode, then all that
-matters is that the various line styles have been set. If, for example
-|section| is at level |1|, then there is no need to do some
-\csa{etocsetstyle}|{molecule}{..}{..}{..}{..}| after
-\csa{etocsetlevel}|{molecule}{1}| if
-\csa{etocsetstyle}|{section}{..}{..}{..}{..}| has already been done (and it has
-been done by the package itself in its definition of its own line styles).
-
-The accepted levels run from |-2| to |6| inclusive. Anything else is
-mapped to |6|, which is a dummy level, never displayed. The package
-does:
-\begin{verbatim}
-\etocsetlevel{book}{-2}
-\etocsetlevel{part}{-1}
-\etocsetlevel{chapter}{0}
-\etocsetlevel{section}{1}
-\etocsetlevel{subsection}{2}
-\etocsetlevel{subsubsection}{3}
-\etocsetlevel{paragraph}{4}
-\etocsetlevel{subparagraph}{5}
-\end{verbatim}
-\etoc own custom styles are activated by \csa{etocdefaultlines}. They
-are illustrated by the main table of contents of this
-document.
-
-These level assignments can be modified at anytime: see
-\autoref{part:surprising} for various applications of this
-technique. As one
-further example, let's mention here that the \hyperref[toc:main]{main table of
-contents} of this document was typeset following these instructions:
-\begin{verbatim}
-\etocsettocdepth {subsubsection} % set the initial tocdepth
-\etocdefaultlines % use the package default line styles. At this early stage in
- % the document they had not yet been modified by \etocsetstyle
- % commands, so \etoctoclines could have been used, too.
-\etocmarkboth\contentsname
-\etocmulticolstyle[1] % one-column display
- {\pdfbookmark[1]{Table of contents}{MAINTOC}% create a bookmark in the pdf
- \noindent\bfseries\Large
- \leaders\hrule height1pt\hfill
- \MakeUppercase{Table of Contents}}
-\begingroup % use a group to limit the scope of the
- \etocsetlevel{subsection}{3} % subsection level change.
- \etocsetlevel{subsubsection}{4} % anything > tocdepth=3.
- \tableofcontents \label{toc:main}
-\endgroup
-\end{verbatim}
-In this way, the subsections used the style originally designed for
-subsubsections, the subsubsections were not printed. Without this modification,
-the appearance would have been very different: the package line styles were
-targeted to be employed in documents with many many sub-sub-sections, in a
-two-column layout, giving thus a more compact output that what is achieved by
-the default \LaTeX{} table of contents. But here, we have few sub-sub-sections
-and it is more interesting to drop them and print in a visually different manner
-sections and subsections.
-
-
-\section{Scope of commands added to
- the \texorpdfstring{\texttt{.toc}}{.toc} file}
-
-\begingroup % pour \small et \MacroFont en particulier.
-\small
-
-\subsection{Testing the scope}
-
-Let us switch to the color red, and also add this command to the |.toc| file:
-
-\color{red!50}
-\addtocontents{toc}{\string\color{red!50}}
-
-\def\MacroFont{\ttfamily \footnotesize\hyphenchar\font45 }
-\begin{verbatim}
- \color{red!50} % changing text color
- \addtocontents{toc}{\string\color{red!50}} % and also in the .toc file
-\end{verbatim}
-
-
-\subsection{This is a (pale) red subsection for illustrative purposes}
-
-Actually, this title here was printed black, due to the way the |scrartcl| class
-works (it would have been red in the |article| class), but we are more
-interested in how it looks in the tables of contents: it does appear red in the
-\hyperref[toc:main]{main table of contents} at the beginning of
-this document, and also in the \hyperref[toc:a]{table of
-contents for this part}. Both entries obey as expected the
-|\color{red!50}| command inserted in the |.toc| file.
-
-But let us now close this subsection and start a section.
-
-
-\section{Am I also red?}
-
-The question is about how it appears in the tables of contents: the answer is
-that, yes it is red in the \hyperref[toc:main]{main TOC}, and no
-it is not red in the \hyperref[toc:a]{local TOC for this part}.
-The reason is that the \meta{finish} code for the subsection level closed a
-group, as it used |\end{enumerate}|.
-
-This illustrates the discussion from \autoref{ssec:limitations}.
-
-The default package line styles do not contain group opening and closing
-instructions: the influence of a command added to the |.toc| file will propagate
-until cancelled by another explicit such command inserted in the |.toc|
-file.
-
-\begin{verbatim}
- \normalcolor
- \addtocontents{toc}{\string\normalcolor}
-\end{verbatim}
-\endgroup
-
-\normalcolor
-\addtocontents{toc}{\string\normalcolor}
-
-Back to black. Note that this scope problem arises in real life in a
-multi-lingual document, as the |babel| package writes to the |.toc| file the
-language changes occurring in the document.
-
-
-\clearpage
-\etocdepthtag.toc {globalcmds}
-
-\part{Commands for the toc display style}
-\label{part:globalcmds}
-
-\thispartstats
-
-\etocsettocstyle{}{}
-\etocstandardlines
-\localtableofcontents \label{toc:globalcmds}
-
-
-\section{Specifying the toc display style}
-
-
-The \emph{toc display} style says whether the TOC appears with
-multiple columns or just one, whether the title is typeset as
-in the |article| or |book| class, or should be centered above
-the entries, with rules on its sides, or if the entire TOC
-should be put in a frame. For example, to opt for a ruled
-heading and single column layout, one issues commands of the
-following type:
-\begin{verbatim}
-\etocruledstyle[1]{Title} \tableofcontents (or \localtableofcontents)
-shortcuts: \etocruled[1]{Title} (or \etoclocalruled[1]{Title})
-\end{verbatim}
-
-\subsection{The command \csbhyp{etocsettocstyle}}
-\label{etocsettocstyle}
-
-This is a command with two mandatory arguments:\\
-\centerline{\csb{etocsettocstyle}\marg{before\_toc}%
-\marg{after\_toc}}
-The \marg{before\_toc} part is responsible for typesetting the
-heading, for example it can be something like
-\starit{section}|{\contentsname}|.
-
-Generally speaking this heading
-should leave \TeX{} in ``vertical mode'' when the actual
-typesetting of the contents will start: the line styles (either
-from the standard classes or the package default line styles)
-all expect to get started in `vertical mode'.
-
-The first argument to \csb{etocsettocstyle} can also contain
-instructions to mark the page headings. Or
-it could check (book class) to see if two-column mode is on,
-and switch to one-column style, and the \meta{after\_toc} part
-would then reenact the two-column mode.
-
-The commands to be described next \csb{etocmulticolstyle},
-\csb{etocruledstyle}, and \csb{etocframedstyle} all call
-\csa{etocsettocstyle} as a lower-level routine, to start a
-\texttt{multi\-cols} environment in \marg{before\_toc} and close it in
-\marg{after\_toc}.
-
-\subsection{The commands \csbhyp{etocmulticolstyle}, \csbhyp{etocmulticol}, and \csbhyp{etoclocalmulticol}}
-\label{etocmulticolstyle}
-\label{etocmulticol}
-\label{etoclocalmulticol}
-
-This is a command with one optional and one mandatory argument:\\
-\centerline{\csb{etocmulticolstyle}%
- \oarg{number\_of\_columns}\marg{heading}} The
-\meta{number\_of\_columns} can go from 1 to 10 (it defaults to 2; if its
-value is 1, naturally no |multicols| environment is then created). The
-\meta{heading} will typically be some `vertical' material like:
- \meta{heading} = |\section*|\marg{title}
-but one may also have horizontal material like |\fbox{Hello World}| (\etoc
-adds automatically a |\par| at the end of this ``heading'' argument to
-\csb{etocmulticolstyle}). Here is for example
-how the main table of contents of this document was
-configured:
-\begin{verbatim}
-\etocmulticolstyle{\noindent\bfseries\Large
- \leaders\hrule height1pt\hfill
- \MakeUppercase{Table of Contents}}
-\end{verbatim}
-After \csa{etocmulticolstyle} all future \csa{tableofcontents} will use the
-specified style, if it does not get changed in-between. A shortcut for
-just one table of contents and
-no impact on the styles of later TOCs is:\\
-\centerline{\csa{etocmulticol}\oarg{number\_of\_columns}\marg{heading}}
-And there is also
-\csa{etoclocalmulticol}\oarg{number\_of\_columns}\marg{heading}.
-
-\subsubsection{The command \csbhyp{etoctocstyle}}
-\label{etoctocstyle}
-
-\centeredline{\csb{etoctocstyle}\oarg{kind}%
-\marg{number\_of\_columns}\marg{title}}
-\centeredline{=
-\csb{etocmulticolstyle}|[|{\itshape number\_of\_columns}|]|%
-|{\kind*{|\itshape title\upshape|}}|}
-where |kind| is one of |chapter|, |section|, . . . and defaults
-to |chapter| or |section| depending on the document class.
-
-\paragraph{\texorpdfstring{\csbhyp{etoc\-toc\-style\-with\-marks}}{etoctocstylewithmarks}}%
-\leavevmode\unskip{\color{blue}\oarg{kind}\marg{number\_of\_columns}\marg{title}\marg{mark}}
-\label{etoctocstylewithmarks}
-\label{etoctocstylewithmarksnouc}
-
-\centeredline
-{=\csb{etocmulticolstyle}|[|{\itshape number\_of\_columns}|]|%
-|{\kind*{|\itshape title \ttfamily\upshape\string\markboth%
-|{\MakeUppercase{|{\rmfamily\itshape mark}|}}}}|}
-where |kind| is one of |chapter|, |section|, ... The
-actual display of the marks depends on the settings of the
-page style. There is variant \csb{etoctocstylewithmarksnouc}
-which does not uppercase.
-
-
-\paragraph{Do we really want paragraph entries in the TOC?}
-
-\paragraph{really?}
-
-\subsection{The commands \csbhyp{etocruledstyle}, \csbhyp{etocruled} and \csbhyp{etoclocal\-ruled}}
-\label{etocruledstyle}
-\label{etocruled}
-\label{etoclocalruled}
-
-The general format of \csa{etocruledstyle} is:\\
-\centerline{\csb{etocruledstyle}%
-\oarg{number of columns}\marg{title of the toc}}
-\noindent
-The title is horizontal material (the |LR| mode of
-\emph{\LaTeX{}, a document preparation system}): if it
-does not fit on one line it should be put in a \csa{parbox} of
-a given width.
-The green frame for the heading of the table of contents at
-the \hyperref[toc:a]{start of the second part of this
- document} was obtained with:
-\begin{verbatim}
-\etocruledstyle[1]{\etocfontminusone\color{green}%
- \fboxrule1pt\fboxsep1ex
- \framebox[\linewidth]
- {\normalcolor\hss Contents of this part\hss}}
-\end{verbatim}
-
-
-As a shortcut to set the style with \csb{etocruledstyle} and
-then issue a
-\csa{tableofcontents}, all inside a group
-so that future table of contents will not be
-affected, there is:\\
-\centerline{\csb{etocruled}\oarg{number\_of\_columns}\marg{title}}
-And the local form will be \csb{etoclocalruled}.
-
-\subsection{The commands \csbhyp{etocframedstyle}, \csbhyp{etocframed}, and \csbhyp{etoclocal\-framed}}
-\label{etocframedstyle}
-\label{etocframed}
-\label{etoclocalframed}
-
-Same mechanism:\\
-\centerline{\csb{etocframedstyle}%
- \oarg{number\_of\_columns}\marg{title}}
-and the accompanying shortcut:\\
-\centerline{\csb{etocframed}\oarg{number\_of\_columns}\marg{title}} The
-shortcut is used if one does not want to modify the style of the next
-TOCs (the other way is to put the whole thing inside braces or a
-|\begingroup...\endgroup|; there is also \csa{etoclocalframed} for a
-local table of contents).
-
-The entire table of contents is framed. The title itself is not framed:
-if one wants a frame one should set it up inside the \meta{title}
-argument to \csa{etocframedstyle} or \csa{etocframed}. The colors for
-the background and for the components (top, left, right, bottom) of the
-border are specified via suitable |\renewcommand|'s (see
-\autoref{ssec:customdisplay}).
-
-A |minipage| is used, hence the produced table of contents isn't
-compatible with a page break. For allowing page breaks, use of
-the commands of
-\href{http://ctan.org/pkg/mdframed}{mdframed}\footnote{\url{http://ctan.org/pkg/mdframed}}
-or
-\href{http://ctan.org/pkg/tcolorbox}{tcolorbox}\footnote{\url{http://ctan.org/pkg/tcolorbox}}
-in the arguments of \csb{etocsettocstyle}
-is recommended.
-
-Examples in this document are on pages \pageref{toc:d},
-\pageref{toc:floating}, \pageref{toc:b}, and \pageref{toc:clone}.
-
-
-\subsection{Headings, titles, \csbhyp{etocoldpar}, \csbhyp{etocinnertopsep}}
-\label{etocinnertopsep}
-\label{etocoldpar}
-
-For \csb{etocmulticolstyle} the mandatory \meta{heading} argument can be
-either
-vertical mode material like |\section*{\emph{Table of Contents}}| or
-horizontal mode material like in the simple |\etocmulticolstyle{Hello World}|.
-
-No explicit |\par| or empty line can be inserted in the mandatory
-argument of \csb{etocmulticolstyle}, but \etoc provides \csb{etocoldpar}
-as a substitute: it does |\let\etocoldpar\par| before the |multicols|
-environment and inserts this |\etocoldpar|\footnote{this command
- \csa{etocoldpar} (= working \csa{par} in the argument to
- \csa{etocmulticolstyle}) is not related to the switch \csb{etocinline}
- whose purpose is to tell \etoc not to do a \csa{par} before the table
- of contents.} at the end of the heading, then does a vertical skip of
-value \csa{etocinnertopsep}. The command \csb{etocoldpar} can also be
-used explicitely if needed in the mandatory argument to
-\csa{etocmulticolstyle} (it is not allowed to insert an empty line
-in this argument).
-
-On the other hand the commands \csb{etocruledstyle} and
-\csb{etocframedstyle} expect an argument ``in LR mode'' (to use the
-terminology from \emph{LaTeX, a document preparation system}). This
-means that multiline titles are only possible if enclosing
-them inside something like a \csa{parbox}.
-
-
-
-An important dimension used by all three of \csb{etocmulticolstyle},
-\csb{etocruledstyle} and \csb{etocframedstyle} is
-\csb{etocinnertopsep}. It gives the amount of separation
-between the heading and the start of the contents. Its default
-value is |2ex| and it is changed with
-|\renewcommand*{\etocinnertopsep}|\marg{new\_value}, not with
-|\setlength|.
-
-
-
-\subsection{The compatibility mode \csbhyp{etocstandarddisplaystyle}}
-\label{etocstandarddisplaystyle}
-
-\etoc will then emulate what the document class would have
-done regarding the global display style of the table of
-contents, in its absence. All customizing from inside the
-class should be obeyed, too.
-
-\subsection{The command \csbhyp{etoc\-inline}}
-\label{etocinline}
-\label{etocnopar}
-\label{etocdisplay}
-
-With \csb{etocinline}, or its synonym |\etocnopar|, the
-|\tableofcontents| command and its variants do \emph{not} first issue a
-|\par| to close the previous paragraph. Hence, the table of contents can
-be printed in an inline style; or, if used only for preparing some token
-list or macro, it will leave nothing in the token stream on execution.
-
-Issue \csb{etocdisplay} to return to the default situation that
-|\tableofcontents| and variants issue a |\par| to switch to vertical
-mode before typesetting the TOC title and contents.
-
-\section{Starred variants of the \csbhyp{tableofcontents} etc... commands}
-\label{tableofcontents*}
-\label{localtableofcontents*}
-\label{etocbeforetitlehook}
-\label{etocaftertitlehook}
-\label{etocaftercontentshook}
-\label{etocmemoirtoctotocfmt}
-
-The \toc, \localtoc, \csa{etocmulticol}, and all their cousins and
-variants have starred variants (the star must be before the other
-arguments). For all but the |memoir| class, they are like the original.
-For the |memoir| class, the original prints an entry in the |.toc| file,
-as is the usage for the original \toc command in that class, whereas the
-starred variants do not, as is the habit in that class.
-
-As soon as one starts using local table of contents one
-discovers that the default |memoir| thing which is to create a
-|chapter| entry for each TOC is not convenient. The command
-\csb{etocmemoirtoctotocfmt}\marg{kind}\marg{name} will change
-the format (\meta{kind} is |chapter|, |section|, |subsection|... and
-\meta{name} can be for example \csa{contentsname}.) The initial set-up
-is with |chapter| and |\contentsname|.
-
-The format of the actual heading of the TOC should also be set
-appropriately (for example with \csa{etoctocstyle}), to use the
-identical division unit as in the first argument to
-\csa{etocmemoirtoctotocfmt}.
-
-A weird situation arises when one has two successive
-\csa{localtableofcontents} (obviously this is not a truly real
-life situation), just after a \csa{part} for example. The first
-one creates (if the default has not been modified as indicated
-above) a Chapter heading which is
-written to the |.toc|. Then the second one thinks to be local
-to this chapter . . . and as a result it displays nothing. The
-fix is to define the second one to be a clone of the first
-one.
-
-Independently of the situation with the |memoir| class there is
-generally speaking a hook macro called
-\csb{etocaftertitlehook} which is inhibited by using the
-starred variants of the displaying commands. Except for the
-|memoir| class, this hook is initially defined to do nothing.
-
-There is \csb{etocaftercontentshook}, similarly defined to do
-nothing. And \csb{etocbeforetitlehook} is also initially defined to do
-nothing. They can be used for some special effects.
-
-\section{Table of contents for this part}
-
-
-\subsection{Testing the compatibility mode}
-
-As a third example we now print the local table of contents
-for this part. First we will test the compatibility mode.\footnote{the
-present document uses the |scrartcl| class, and we check here that
-the \etoc compatibility mode does respect the customizing done via the
-class commands.} The original was invisibly defined with a label at the
-beginning of this \autoref{part:globalcmds}.
-\begin{verbatim}
-\KOMAoptions{toc=left}
-\etocstandarddisplaystyle % necessary for the display to obey toc=left
-\etocstandardlines
-\tableofcontents \ref{toc:globalcmds}
-\end{verbatim}
-\KOMAoptions{toc=left}
-\etocstandarddisplaystyle
-\etocstandardlines
-\tableofcontents \ref{toc:globalcmds}
-
-\subsection{A framed display}
-
-We now opt for a ``framed'' style, using the package default
-line styles and some colors added (it has been put in a float which appears
-\vpageref{toc:b}).\footnote{inside the |figure| environment and before the
- framed toc, which uses |multicols|, we added \csa{normalcolor} as work-around
- to an interaction bug (related to the \csa{color\{red\}} command we added to
- the |.toc| file) between |multicols|, |color| and the |figure|
- environment. This bug has nothing to do with \etoc.}
-
-\begin{verbatim}
-\etocdefaultlines
-\begingroup
-\renewcommand{\etoccolumnsep}{2em}
-\renewcommand{\etocinnerleftsep}{1.5em}
-\renewcommand{\etocinnerrightsep}{1.5em}
-% specify a background color for the toc contents
-\renewcommand{\etocbkgcolorcmd}{\color{yellow!10}}
-% set up the top and bottom rules
-\renewcommand{\etoctoprule}{\hrule height 1pt}
-\renewcommand{\etoctoprulecolorcmd}{\color{red!25}}
-\renewcommand{\etocbottomrule}{\hrule height 1pt}
-\renewcommand{\etocbottomrulecolorcmd}{\color{red!25}}
-% set up the left and right rules
-\renewcommand{\etocleftrule}{\vrule width 5pt}
-\renewcommand{\etocrightrule}{\vrule width 5pt}
-\renewcommand{\etocleftrulecolorcmd}{\color{red!25}}
-\renewcommand{\etocrightrulecolorcmd}{\color{red!25}}
-% use \fcolorbox to set up a colored frame for the title
-\fboxrule1pt
-\renewcommand{\etocbelowtocskip}{0pt\relax}
-\etocframedstyle {\normalsize\rmfamily\itshape
- \fcolorbox{red}{white}{\parbox{.8\linewidth}{\centering
- This is a table of contents \`a la \etoc, but just for
- the sections and subsections in this part. As it is put
- in a frame, it has to be small enough to fit on
- one page. It has the label |toc:b|.}}}
-\begin{figure}[ht!]
- \centering
-\normalcolor % work-around to a bug involving color and multicols (and figure)
-\tableofcontents \label{toc:b} \ref{toc:globalcmds}
-\end{figure}
-\endgroup
-\end{verbatim}
-
-
-\etocdefaultlines
-\begingroup
-\renewcommand{\etoccolumnsep}{2em}
-\renewcommand{\etocinnerleftsep}{1.5em}
-\renewcommand{\etocinnerrightsep}{1.5em}
-% specify a background color for the toc contents
-\renewcommand{\etocbkgcolorcmd}{\color{yellow!10}}
-% set up the top and bottom rules
-\renewcommand{\etoctoprule}{\hrule height 1pt}
-\renewcommand{\etoctoprulecolorcmd}{\color{red!25}}
-\renewcommand{\etocbottomrule}{\hrule height 1pt}
-\renewcommand{\etocbottomrulecolorcmd}{\color{red!25}}
-% set up the left and right rules
-\renewcommand{\etocleftrule}{\vrule width 5pt}
-\renewcommand{\etocrightrule}{\vrule width 5pt}
-\renewcommand{\etocleftrulecolorcmd}{\color{red!25}}
-\renewcommand{\etocrightrulecolorcmd}{\color{red!25}}
-% use \fcolorbox to set up a colored frame for the title
-\fboxrule1pt
-\renewcommand{\etocbelowtocskip}{-.5\baselineskip\relax}
-\etocframedstyle {\normalsize\rmfamily\itshape
- \fcolorbox{red}{white}{\parbox{.8\linewidth}{\centering
- This is a table of contents \`a la \etoc, but just for
- the sections and subsections in this part. As it is put
- in a frame, it has to be small enough to fit on
- one page. It has the label |toc:b|.}}}
-\begin{figure}[ht!]
- \centering
-\normalcolor % work-around to a bug involving color and multicols (and figure)
-\tableofcontents \label{toc:b} \ref{toc:globalcmds}
-\end{figure}
-\endgroup
-
-% Il y a un color leak du framed mais uniquement lorsqu'il est mis dans le
-% float. 2013/10/13, qui révèle un bug (?? NON) du style framed je vais regarder
-% mais bon. Le leak apparaît avec ruled aussi, et même avec juste multicolstyle
-% MAIS PAS EN UNE SEULE COLONNE (même framed ou ruled). il semble qu'il y aie
-% donc un problème d'interaction avec multicol là. à voir. Pas le temps
-% maintenant.
-
-% 2013/10/14
-% il s'agit en fait d'un bug de color+multicols+figure qui n'a rien à voir avec
-% etoc:
-% http://tex.stackexchange.com/questions/138783/color-leak-from-multicols-within-a-figure
-% J'ai trouvé le work-around qui consiste simplement à ajouter un \normalcolor
-% _avant_ le multicols à l'intérieur de figure
-
-\subsection{A (crazy) inline display}
-
-Let us finally make some crazy inline display of the table of
-contents of this entire document. We will typeset the subsections as
-footnotes... This kind of style is suitable for a hyperlinked
-document, probably not for print! (although I like it, but my personal taste in
-many matters does not seem to be widely shared).
-
-%%%% Note: 27 april 2014
-
-%%%% except for a miraculous situation depending from the quantity of previous
-%%%% material this TOC will have links extending accross pagebreaks, which
-%%%% dvipdfmx does not know how to handle completely. Apart from that the output
-%%%% is ok, thus no need to try seriously to avoid them.
-
-\begingroup
-\newsavebox{\forsubsections}
-\etocsetstyle{part}{\upshape. \etocskipfirstprefix}{. \upshape}{\bfseries\etocname:~~}{}
-\etocsetstyle{section}{\itshape\etocskipfirstprefix}{, }{\mdseries\etocname}{}
-\etocsetstyle{subsection}
- {\begin{lrbox}{\forsubsections}\upshape\etocskipfirstprefix}
- {; }
- {\etocname}
- {\end{lrbox}\footnote{\unhbox\forsubsections.}}
-\etocsetstyle{subsubsection}{ (\itshape\etocskipfirstprefix}
- {, }{\etocname}{\/\upshape)}
-\etocsettocstyle{Here is the inline table of contents. }{.\par}
-\tableofcontents \label{toc:crazyinline}
-\endgroup
-
-The code used:
-\begin{verbatim}
-\begingroup
-\newsavebox{\forsubsections}
-\etocsetstyle{part}{\upshape. \etocskipfirstprefix}{. \upshape}
- {\bfseries\etocname:~~}{}
-\etocsetstyle{section}{\itshape\etocskipfirstprefix}{, }
- {\mdseries\etocname}{}
-\etocsetstyle{subsection}
- {\begin{lrbox}{\forsubsections}\upshape\etocskipfirstprefix}
- {; }{\etocname}{\end{lrbox}\footnote{\unhbox\forsubsections.}}
-\etocsetstyle{subsubsection}
- { (\itshape\etocskipfirstprefix}{, }{\etocname}{\/\upshape)}
-\etocsettocstyle{Here is the inline table of contents. }{.\par}
-\tableofcontents
-\endgroup
-\end{verbatim}
-
-
-\clearpage
-\etocdepthtag.toc {custom}
-
-\part{Using and customizing \etoc}
-\label{part:custom}
-
-\thispartstats
-
-\etocdefaultlines
-\renewcommand{\etoctoprule}{\hrule height2pt depth0pt}
-\renewcommand{\etoctoprulecolorcmd}{\color{red}}
-
-\etocruledstyle{\normalfont\normalsize\rmfamily\fboxrule1pt\color{red}%
- \fbox{\parbox{.8\linewidth}{\centering\normalcolor This is a table of
- contents for the sections and
- subsections in this part. It carries the label |toc:c|}}}
-
-\localtableofcontents \label{toc:c}
-
-
-\section{Summary of the main style commands}
-
-\subsection{Setting up local styles}
-
-\hbox{\color{green}\fboxrule1pt\fboxsep1em
-\setbox0\hbox{\csa{etocthename}, \csa{etocthenumber}, \csa{etocthepage}, \csa{etoclink}\marg{linkname}}%
-\framebox[\linewidth][c]
-{\vbox{\hsize\wd0\normalcolor\noindent
-\csa{etocsetstyle}\marg{levelname}%
- \marg{start}\marg{prefix}\marg{contents}\marg{finish}\\
-\csa{etocname}, \csa{etocnumber}, \csa{etocpage},
-\csa{etocifnumbered}\marg{A}\marg{B}\\
-\csa{etocthename}, \csa{etocthenumber}, \csa{etocthepage}, \csa{etoclink}\marg{linkname}
-}}}
-
-\subsection{Setting up toc display styles}
-
-\medskip
-\hbox{\color{green}\fboxrule1pt\fboxsep1em
-\setbox0\hbox{\csa{etoctocstylewithmarksnouc}\oarg{kind}%
-\marg{number\_of\_columns}\marg{title}\marg{mark}}%
-\framebox[\linewidth][c]
-{\vbox{\hsize\wd0
-\normalcolor\noindent
-\csa{etocmulticolstyle}\oarg{number\_of\_columns}\marg{heading}\\
-\csa{etoctocstyle}\oarg{kind}\marg{number\_of\_columns}\marg{title}\\
-\csa{etoctocstylewithmarks}\oarg{kind}\marg{number\_of\_columns}%
-\marg{title}\marg{mark}\\
-\csa{etoctocstylewithmarksnouc}\oarg{kind}\marg{number\_of\_columns}%
-\marg{title}\marg{mark}\\
-\csa{etocruledstyle}\oarg{number\_of\_columns}\marg{title}\\
-\csa{etocframedstyle}\oarg{number\_of\_columns}\marg{title}\\
-\csa{etocsettocstyle}\marg{before\_toc}\marg{after\_toc}}}}
-
-\subsection{Displaying tables of contents}
-
-
-\medskip \hbox{\color{green}\fboxrule1pt\fboxsep1em
- \setbox0\hbox{\csa{etocname}, \csa{etocnumber},
- \csa{etocpage}, \csa{etocifnumbered}\marg{A}\marg{B}}%
- \framebox[\linewidth][c]
- {\vbox{\hsize\wd0\normalcolor\noindent
- \toc\\
- \localtoc\\
- \csa{etocmulticol}\oarg{number\_of\_columns}\marg{heading}\\
- \csa{etoclocalmulticol}\oarg{number\_of\_columns}\marg{heading}\\
- \csa{etocruled}\oarg{number\_of\_columns}\marg{title}\\
- \csa{etoclocalruled}\oarg{number\_of\_columns}\marg{title}\\
- \csa{etocframed}\oarg{number\_of\_columns}\marg{title}\\
- \csa{etoclocalframed}\oarg{number\_of\_columns}\marg{title}\\
- \hbox{}{\itshape\ttfamily\ \ \ \ and their starred variants}
- }}}
-
-\subsection{Labels and references}
-
-The commands (starred or not) to actually display the table of contents
-can be followed with optional labels or references:\par
-
-\medskip \hbox{\color{green}\fboxrule1pt\fboxsep1em
- \setbox0\hbox{\csa{etocname}, \csa{etocnumber},
- \csa{etocpage}, \csa{etocifnumbered}\marg{A}\marg{B}}%
- \framebox[\linewidth][c]
- {\vbox{\hsize\wd0\normalcolor\noindent
- \toc \csa{label}|\{toc:here\}|\\
- \toc \csa{ref}|\{toc:far\}| \\
- \toc \csa{label}|\{toc:here\}| \csa{ref}|\{toc:far\}| \\
- \localtoc \csa{label}|\{toc:here\}|\\
- \hbox{}{\itshape\ttfamily\ \ \ \ similarly with\ }%
- \csa{etocmulticol}{\itshape\ttfamily\ etc . . . }
- }}}
-
-
-\medskip The commands for local tables of
-contents do \emph{not} react to a \csa{ref} following them.
-
-When re-displaying another toc, only its contents are transferred:
-both the line styles and the toc display style are the ones
-currently defined, not the ones from the cloned toc.
-
-
-\section{The package default line styles: \csbhyp{etocdefaultlines}}
-\label{etocdefaultlines}
-
-These line styles were written at an early stage in the
-development of the package; although the next section explains how
-to customize the font choicess or vertical spaces, etc\dots, used
-by these line styles, most other changes would require copying
-them from the sources and modify them directly. Admittedly they
-have been written at a rather scary low-\TeX{} level, and will not
-serve as a very friendly starting point.
-
-Activating their use is done via \csa{etocdefaultlines}, or
-\csa{etoctoclines} if the line styles have not been modified with
-\csa{etocsetstyle}. Sections and sub-sections are printed in
-essentially the same manner, except that the leading for
-sub-sections is a bit smaller (with document classes lacking a
-\csa{chapter} command, the sections are printed in bold typeface;
-this is the case in the present document). Sub-sub-sections are
-printed inline, in one paragraph, with no numbers or page numbers.
-This style was designed and tested with documents having lots of
-sub-sub-sections, and should be used on a two-column layout: it
-provides (only in that situation with many sub-sub-sections) a
-more compact presentation than what is achieved by the \LaTeX{}
-default.\footnote{and there will never be a Part or Chapter entry
- alone at the bottom of a column or page (except if it has no
- sub-unit).} On the other hand, used with a one-column layout,
-and with few sub-sub-sections, the style is a bit more spread out
-vertically than the \LaTeX{} default, sub-sections are not
-visually much different from sections (especially for document
-classes with a \csa{chapter} command), so the result is less
-hierarchical in appearance than in the \LaTeX{} default.
-
-In this document, for the \hyperref[toc:main]{main table of contents}, we did
-|\etocsetlevel{subsection}{3}| hence the sub-sections were printed with the
-sub-sub-section inline style.
-
-Let us, to the contrary, typeset now this main table of contents as if the
-document had been done with a class having the \csa{chapter} command: we will
-print sections as chapters, and subsections as sections. We use
-\csa{etocsetlevel} for that, and also we need to change the font style of
-``sections'' (which in truth are our subsections) to use not the bold but the
-medium series; we modify the \csa{etocfontone} command for that. Also we use dot
-leaders which are less spread out than in the package default.
-
-
-\begin{verbatim}
-\etocruledstyle[2]{\normalfont\normalsize\rmfamily\itshape
- \fbox{\parbox{.6\linewidth}{
- \leftskip 0pt plus .5fil
- \rightskip 0pt plus -.5fil
- \parfillskip 0pt plus 1fil This is the global table of
- contents on two columns, using \etoc default line styles, but with
- sections as chapters, and subsections as sections.
- }}}
-\etocdefaultlines
-\etocsetnexttocdepth{1}
-\begingroup
-\etocsetlevel{section}{0}
-\etocsetlevel{subsection}{1}
-\renewcommand*{\etocfontone}{\normalfont \normalsize}
-\renewcommand*{\etoctoclineleaders}
- {\hbox{\normalfont\normalsize\hbox to 1ex {\hss.\hss}}}
-\sloppy
-\tableofcontents
-\endgroup
-\end{verbatim}
-
-\etocruledstyle[2]{\normalfont\normalsize\rmfamily\itshape
- \fbox{\parbox{.6\linewidth}{
- \leftskip 0pt plus .5fil
- \rightskip 0pt plus -.5fil
- \parfillskip 0pt plus 1fil This is the global table of
- contents on two columns, using \etoc default line styles, but with
- sections as chapters, and subsections as sections.
- }}}
-
-\etocdefaultlines
-\etocsetnexttocdepth{1}
-
-\begingroup
-\etocsetlevel{section}{0}
-\etocsetlevel{subsection}{1}
-\renewcommand*{\etocfontone}{\normalfont \normalsize}
-\renewcommand*{\etoctoclineleaders}
- {\hbox{\normalfont\normalsize\hbox to 1ex {\hss.\hss}}}
-\sloppy
-\tableofcontents
-\endgroup
-
-\section{Customizing \etoc}
-
-\subsection{Customizing the \etoc pre-defined line styles}
-
-We will simply list the relevant commands as defined in the
-package. Customizing them goes through suitable
-\csa{renewcommand}s:
-\begin{verbatim}
-\newcommand*\etocfontminustwo{\normalfont \LARGE \bfseries}
-\newcommand*\etocfontminusone{\normalfont \large \bfseries}
-\newcommand*\etocfontzero{\normalfont \large \bfseries}
-\newcommand*\etocfontone{\normalfont \normalsize \bfseries}
-\newcommand*\etocfonttwo{\normalfont \normalsize}
-\newcommand*\etocfontthree{\normalfont \footnotesize}
-
-\newcommand*\etocsepminustwo{4ex plus .5ex minus .5ex}
-\newcommand*\etocsepminusone{4ex plus .5ex minus .5ex}
-\newcommand*\etocsepzero{2.5ex plus .4ex minus .4ex}
-\newcommand*\etocsepone{1.5ex plus .3ex minus .3ex}
-\newcommand*\etocseptwo{.5ex plus .1ex minus .1ex}
-\newcommand*\etocsepthree{.25ex plus .05ex minus .05ex}
-
-\newcommand*\etocminustwoleftmargin{1.5em plus 0.5fil}
-\newcommand*\etocminustworightmargin{1.5em plus -0.5fil}
-\newcommand*\etocminusoneleftmargin{1em}
-\newcommand*\etocminusonerightmargin{1em}
-
-\newcommand*\etocbaselinespreadminustwo{1}
-\newcommand*\etocbaselinespreadminusone{1}
-\newcommand*\etocbaselinespreadzero{1}
-\newcommand*\etocbaselinespreadone{1}
-\newcommand*\etocbaselinespreadtwo{1}
-\newcommand*\etocbaselinespreadthree{.9}
-\newcommand*\etoctoclineleaders
- {\hbox{\normalfont\normalsize\hbox to 2ex {\hss.\hss}}}
-\newcommand*\etocabbrevpagename{p.~} % initial of "page"
-\newcommand*\etocpartname{\partname} % utilisateurs de frenchb: attention
- % car donne "partie" sans majuscule.
-\newcommand*\etocbookname{Book} % to be modified according to language
-\end{verbatim}
-
-No customizing of the standard line styles is possible from
-within \etoc. As already explained, when
-\csa{etocstandardlines} has been issued, the package just makes
-itself very discrete and acts only at the global level, and
-the TOC entries are (hopefully) formatted as would have
-happened in the absence of \etoc.\footnote{with the
- KOMA-script classes, we noticed that
- \csa{etocstandarddisplaystyle} was apparently needed for the
- KOMA options |toc=left| to be active at the level of the line entries.}
-
-
-The \csa{etocstandardlines} compatibility mode will work also with
-sectioning commands made known to \etoc via \csa{etocsetlevel},
-under the condition of course that these sectioning commands
-are accompanied with all the relevant definitions for
-typesetting toc entries in the \LaTeX{} default manner
-(existence of the macros \csa{l@something} . . .).
-
-Using the command \csa{etocsetstyle}, be it in the preamble or
-in the body of the document, has the secondary effect of
-switching off the compatibility mode.
-
-\subsection{Customizing the toc display styles}
-\label{ssec:customdisplay}
-
-Again we list the relevant macros, what they do should be
-legible from their names. Note that \csa{renewcommand}'s and
-not \csa{setlength}'s have to be used for what appear to be
-lengths, and that color commands are not just color
-specifications, they must include \csa{color}, and are canceled
-by re-defining them to do \csa{relax}.
-\begin{verbatim}
-\newcommand*\etocabovetocskip{3.5ex plus 1ex minus .2ex}
-\newcommand*\etocbelowtocskip{3.5ex plus 1ex minus .2ex}
-
-\newcommand*\etoccolumnsep{2em}
-\newcommand*\etocmulticolsep{0ex}
-\newcommand*\etocmulticolpretolerance{-1}
-\newcommand*\etocmulticoltolerance{200}
-\newcommand*\etocdefaultnbcol{2}
-\newcommand*\etocinnertopsep{2ex}
-\newcommand*\etoctoprule{\hrule}
-\newcommand*\etoctoprulecolorcmd{\relax}
-
-% for the framed style only:
-\newcommand*\etocinnerleftsep{2em}
-\newcommand*\etocinnerrightsep{2em}
-\newcommand*\etocinnerbottomsep{3.5ex}
-
-\newcommand*\etocleftrule{\vrule}
-\newcommand*\etocrightrule{\vrule}
-\newcommand*\etocbottomrule{\hrule}
-\newcommand*\etocleftrulecolorcmd{\relax}
-\newcommand*\etocrightrulecolorcmd{\relax}
-\newcommand*\etocbottomrulecolorcmd{\relax}
-
-\newcommand*\etocbkgcolorcmd{\relax}
-
-% hooks
-\newcommand\etocframedmphook{\relax}
-\end{verbatim}
-
-The \csa{etocframedmphook} is positioned immediately
-after the beginning of a minipage environment where the
-contents of the framed TOC are typeset.
-
-The \csa{...colorcmd} commands are initially set to expand to
-\csa{relax} (hence do not require package |color| or |xcolor|
-to be loaded). If one has modified a command such as
-\csa{etocbkgcolorcmd} to expand to a color command and wants
-to reset it to do nothing, one \emph{must} use
-|\renewcommand{\etocbkgcolorcmd}{\relax}| and not
-\csa{let}\csa{etocbkgcolorcmd}\csa{relax}.
-
-Regarding the dimensions of the top rule they can be specified
-in |ex|'s or |em|'s as in this example:
-\centeredline{|\renewcommand{\etoctoprule}{\hrule height 1ex}|}
-The package code is done in such a manner
-that it is the font size in instance at the end of typesetting
-the title argument to \csa{etocruledtoc} or
-\csa{etocframedtoc} which will be used for the meaning of the
-`1ex'. Of course also the other rule commands can have their
-dimensions in font relative units, but their values are
-decided on the basis of the font in effect just before the
-table of contents.
-
-The top and bottom rules do not have to be rules and can be
-horizontal \emph{leaders} (of a specified height) in the general
-\TeX{} sense. However the left and right rules are not
-used as (horizontal) leaders but as objects of a given specified
-width. Note that \emph{only} the Plain \TeX{} syntax for rules is
-accepted here.
-
-\section{One more example of colored TOC layout}
-\label{ssec:tocclone}
-
-The command \csa{etocframedstyle} puts the title on the top
-rule in a centered position. This is not very convenient for
-this example so we included the title as part of the
-\meta{start} code at section level, to get it \emph{inside}
-the frame.
-
-\begin{verbatim}
-\begingroup
-\definecolor{subsecnum}{RGB}{13,151,225}
-\definecolor{secbackground}{RGB}{0,177,235}
-\definecolor{tocbackground}{RGB}{212,237,252}
-
-\renewcommand{\etocbkgcolorcmd}{\color{tocbackground}}
-\renewcommand{\etocleftrulecolorcmd}{\color{tocbackground}}
-\renewcommand{\etocrightrulecolorcmd}{\color{tocbackground}}
-\renewcommand{\etocbottomrulecolorcmd}{\color{tocbackground}}
-\renewcommand{\etoctoprulecolorcmd}{\color{tocbackground}}
-
-\renewcommand{\etocleftrule}{\vrule width 1cm}
-\renewcommand{\etocrightrule}{\vrule width .5cm}
-\renewcommand{\etocbottomrule}{\hrule height 12pt}
-\renewcommand{\etoctoprule}{\hrule height 12pt}
-
-\renewcommand{\etocinnertopsep}{0pt}
-\renewcommand{\etocinnerbottomsep}{0pt}
-\renewcommand{\etocinnerleftsep}{0pt}
-\renewcommand{\etocinnerrightsep}{0pt}
-
-\newcommand\shiftedwhiterule[2]{%
- \hbox to \linewidth{\color{white}%
- \hskip#1\leaders\vrule height1pt\hfil}\nointerlineskip\vskip#2}
-
-\etocsetstyle{subsubsection}{\etocskipfirstprefix}
- {\shiftedwhiterule{\leftskip}{6pt}}
- {\sffamily\footnotesize
- \leftskip2.5cm\hangindent1cm\rightskip1cm\noindent
- \hbox to 1cm{\color{subsecnum}\etocnumber\hss}%
- \color{black}\etocname\leaders\hbox to .2cm{\hss.}\hfill
- \rlap{\hbox to 1cm{\hss\etocpage\hskip.2cm}}\par
- \nointerlineskip\vskip3pt}
- {}
-
-\etocsetstyle{subsection}{\etocskipfirstprefix}
- {\shiftedwhiterule{1.5cm}{6pt}}
- {\sffamily\small
- \leftskip1.5cm\hangindent1cm\rightskip1cm\noindent
- \hbox to 1cm{\color{subsecnum}\etocnumber\hss}%
- \color{black}\etocname\leaders\hbox to .2cm{\hss.}\hfill
- \rlap{\hbox to 1cm{\hss\etocpage\hskip.2cm}}\par
- \nointerlineskip\vskip6pt}
- {}
-
-\newcommand{\coloredstuff}[2]{%
- \leftskip0pt\rightskip0pt\parskip0pt
- \fboxsep0pt % \colorbox uses \fboxsep also when no frame!
- \noindent\colorbox{secbackground}
- {\parbox{\linewidth}{%
- \vskip5pt
- {\noindent\color{#1}#2\par}\nointerlineskip
- \vskip3pt}}%
- \par\nointerlineskip}
-
-\etocsetstyle{section}
-{\coloredstuff{white}
- {\hfil \hyperref[toc:b]{\bfseries\large I am a twin of
- that other TOC (click me!)}\hfil}}
-{\vskip3pt\sffamily\small}
-{\coloredstuff{white}
- {\leftskip1.5cm\rightskip.5cm\parfillskip-\rightskip
- \makebox[0pt][r]{\makebox[.5cm][r]{\etocnumber\hspace{.2cm}}}%
- \etocname\hfill\makebox[.5cm][r]{\etocpage\hspace{.2cm}}}%
- \vskip6pt }
-{}
-
-\etocframedstyle[1]{}
-\tableofcontents \label{toc:clone} \ref{toc:globalcmds}
-\endgroup
-\end{verbatim}
-
-\begingroup
-\definecolor{subsecnum}{RGB}{13,151,225}
-\definecolor{secbackground}{RGB}{0,177,235}
-\definecolor{tocbackground}{RGB}{212,237,252}
-
-\renewcommand{\etocbkgcolorcmd}{\color{tocbackground}}
-\renewcommand{\etocleftrulecolorcmd}{\color{tocbackground}}
-\renewcommand{\etocrightrulecolorcmd}{\color{tocbackground}}
-\renewcommand{\etocbottomrulecolorcmd}{\color{tocbackground}}
-\renewcommand{\etoctoprulecolorcmd}{\color{tocbackground}}
-
-\renewcommand{\etocleftrule}{\vrule width 1cm}
-\renewcommand{\etocrightrule}{\vrule width .5cm}
-\renewcommand{\etocbottomrule}{\hrule height 12pt}
-\renewcommand{\etoctoprule}{\hrule height 12pt}
-
-\renewcommand{\etocinnertopsep}{0pt}
-\renewcommand{\etocinnerbottomsep}{0pt}
-\renewcommand{\etocinnerleftsep}{0pt}
-\renewcommand{\etocinnerrightsep}{0pt}
-
-\newcommand\shiftedwhiterule[2]{%
- \hbox to \linewidth{\color{white}%
- \hskip#1\leaders\vrule height1pt\hfil}\nointerlineskip
-\vskip#2}
-
-\etocsetstyle{subsubsection}{\etocskipfirstprefix}
-{\shiftedwhiterule{\leftskip}{6pt}}
-{\sffamily\footnotesize
-\leftskip2.5cm\hangindent1cm\rightskip1cm\noindent
-\hbox to 1cm{\color{subsecnum}\etocnumber\hss}%
-\color{black}\etocname\leaders\hbox to .2cm{\hss.}\hfill
-\rlap{\hbox to 1cm{\hss\etocpage\hskip.2cm}}\par
-\nointerlineskip\vskip3pt}
-{}
-
-\etocsetstyle{subsection}{\etocskipfirstprefix}
-{\shiftedwhiterule{1.5cm}{6pt}}
-{\sffamily\small
-\leftskip1.5cm\hangindent1cm\rightskip1cm\noindent
-\hbox to 1cm{\color{subsecnum}\etocnumber\hss}%
-\color{black}\etocname\leaders\hbox to .2cm{\hss.}\hfill
-\rlap{\hbox to 1cm{\hss\etocpage\hskip.2cm}}\par
-\nointerlineskip\vskip6pt}
-{}
-
-\newcommand{\coloredstuff}[2]{%
- \leftskip0pt\rightskip0pt\parskip0pt
- \fboxsep0pt % \colorbox uses \fboxsep also when no frame!
- \noindent\colorbox{secbackground}
- {\parbox{\linewidth}{%
- \vskip5pt
- {\noindent\color{#1}#2\par}\nointerlineskip
- \vskip3pt}}%
- \par\nointerlineskip}
-
-% v1.07l on the occasion of traduction into German documentation
- % APRIL 26, 2014 Improvement in the section style for better placement of
- % page number when the section name is more than one line long. Use of
- % \makebox rather than \hbox, to be more LaTeX like.
-\etocsetstyle{section}
-{\coloredstuff{white}
- {\hfil \hyperref[toc:b]{\bfseries\large I am a twin of
- that other TOC (click me!)}\hfil}}
-{\vskip3pt\sffamily\small}
-{\coloredstuff{white}
- {\leftskip1.5cm\rightskip.5cm\parfillskip-\rightskip
- \makebox[0pt][r]{\makebox[.5cm][r]{\etocnumber\hspace{.2cm}}}%
- \etocname\hfill\makebox[.5cm][r]{\etocpage\hspace{.2cm}}}%
- \vskip6pt }
-{}
-
-\etocframedstyle[1]{}
-
-\begin{figure}[ht!]\centering
- \tableofcontents \label{toc:clone} \ref{toc:globalcmds}
-\end{figure}
-\endgroup
-
-The TOC has been put in a \hyperref[toc:clone]{float} which appears
-\vpageref{toc:clone}. The coding is a bit involved\footnote{and reveals the
- author's preference for the \TeX{} syntax...} as it does not use any
-additional package. Also, it was written at some early stage and I have not
-revised it since.
-
-A better solution would be to use some package to set
-up a background color possibly extending accross pages, as the
-framed style (which we used to get this background
-color) can only deal with material short enough to fit on one
-page.
-
-Regarding colors, generally speaking all color commands inside
-\etoc are initially defined to do nothing, and the choice to
-use or not colors is left to the user.
-
-\clearpage
-\etocdepthtag.toc {tips}
-
-\part{Tips}
-\label{part:tipsandtricks}
-
-\thispartstats
-
-%%%% \invisiblelocaltableofcontents \label{toc:tipsandtricks}
-
-\etocsettocstyle{}{}
-\etocstandardlines
-\localtableofcontents
-
-\section{... and tricks}
-
-\subsection{Hacking framed parboxes}
-
-
-\begin{verbatim}
-\etocdefaultlines
-\renewcommand\etoctoprule{\hrule height 2pt depth 2pt}
-\etocruled{\color{green}\fboxrule2pt\fboxsep1ex
- \fbox{\raisebox{-\fontdimen22\textfont2}
- {\color{blue}\parbox{.5\linewidth}
- {\normalfont This text is perfectly centered
- vertically with respect to the
- surrounding horizontal rules.}}}}
-\ref{toc:globalcmds}
-\end{verbatim}
-
-\etocdefaultlines
-
-\renewcommand\etoctoprule{\hrule height 2pt depth 2pt}
-
-\etocruled{\color{green}\fboxrule2pt\fboxsep1ex
- \fbox{\raisebox{-\fontdimen22\textfont2}
- {\color{blue}\parbox{.5\linewidth}
- {\normalfont This text is perfectly centered
- vertically with respect to the
- surrounding horizontal rules.}}}}
- \ref{toc:globalcmds}
-
-
-\subsection{Interverting the levels}
-\label{subsec:interverting}
-
-Let us display and count all subsections occurring in this
-document (see \autoref{part:surprising} for other uses of
-this technique):
-\begin{verbatim}
-\etocsetnexttocdepth{2}
-\begingroup
-\etocsetlevel{part}{3}
-\etocsetlevel{section}{3}
-\etocsetstyle{subsection}
- {\small\begin{enumerate}[itemsep=0pt,label=,leftmargin=0pt]}
- {\normalfont\bfseries\item}
- {\roman{enumi}. \mdseries\etocname{} (\etocnumber, p.~\etocpage)}
- {\end{enumerate}}
-\renewcommand{\etoccolumnsep}{2.75em}
-\renewcommand{\columnseprule}{1pt}
-\etocmulticol[3]{\subsection{All subsections of this document}}
-\endgroup
-\end{verbatim}
-
-\etocsetnexttocdepth{2}
-
-\begingroup
-\etocdefaultlines
-\etocstandarddisplaystyle
-\etocsetlevel{book}{3}
-\etocsetlevel{part}{3}
-\etocsetlevel{chapter}{3}
-\etocsetlevel{section}{3}
-\etocsetstyle{subsection}{\small
-\begin{enumerate}[itemsep=0pt,label=,leftmargin=0pt]}
-{\normalfont\bfseries\item}
-{\roman{enumi}. \mdseries\etocname{} (\etocnumber, p.~\etocpage)}
-{\end{enumerate}}
-
-\renewcommand{\etoccolumnsep}{2.75em}
-\renewcommand{\columnseprule}{1pt}
-
-%%\etocmarkbothnouc{List of all subsections}
-%% le mark (\markright) est fait par \subsection
-
-\etocmulticol[3]{\subsection{All subsections of this document}\label{toc:allsubsections}}
-
-
-\endgroup
-
-\subsection{Displaying statistics}\label{ssec:statistics}
-
-Each part of this document starts with a paragraph telling how many
-sections and subsections it has. Well, each one of this paragraph is a
-table of contents! We designed a macro \csa{thispartstats} to do that.
-It uses ``storage'' boxes to keep the information about the first and
-last section or subsection. Using boxes is the simplest manner to
-encapsulate the |hyperref| link for later use (whether there is one or
-none). However, one cannot modify then the font or the color (using the
-\TeX{} primitive \csa{setbox} rather than the \LaTeX{} \csa{sbox} would
-allow to change the color of the un-boxed saved box). If such a need
-arises, one must switch from using boxes to using macros, and store the
-|hyperref| data for later use as was done in the code presented in
-\autoref{ssec:molecule}. We present also this second method.
-
-But first, the code of \csa{thispartstats}:\par
-\begin{verbatim}
-\newsavebox\firstnamei \newsavebox\firstnumberi
-\newsavebox\lastnamei \newsavebox\lastnumberi
-\newsavebox\firstnameii \newsavebox\firstnumberii
-\newsavebox\lastnameii \newsavebox\lastnumberii
-\newcounter{mycounti} \newcounter{mycountii}
-\newcommand*{\thispartstatsauxi}{} \newcommand*{\thispartstatsauxii}{}
-\newcommand*{\oldtocdepth}{}
-\newcommand*{\thispartstats}{%
- \setcounter{mycounti}{0}%
- \setcounter{mycountii}{0}%
- \def\thispartstatsauxi{%
- \sbox{\firstnamei}{\etocname}%
- \sbox{\firstnumberi}{\etocnumber}%
- \def\thispartstatsauxi{}}%
- \def\thispartstatsauxii{%
- \sbox{\firstnameii}{\etocname}%
- \sbox{\firstnumberii}{\etocnumber}%
- \def\thispartstatsauxii{}}%
- \begingroup
- \etocsetstyle{subsection} {} {}
- {\thispartstatsauxii
- \stepcounter{mycountii}%
- \sbox{\lastnameii}{\etocname}%
- \sbox{\lastnumberii}{\etocnumber}} {}%
- \etocsetstyle{section} {} {}
- {\thispartstatsauxi
- \stepcounter{mycounti}%
- \sbox{\lastnamei}{\etocname}%
- \sbox{\lastnumberi}{\etocnumber}}
- {Here are some statistics for this part: it contains \arabic{mycounti}
- section\ifnum\value{mycounti}>1 s\fi{} and \arabic{mycountii}
- subsection\ifnum\value{mycountii}>1 s\fi. The name of the first section is
- \unhbox\firstnamei{} and the corresponding number is \unhbox\firstnumberi.
- The name of the last section is \unhbox\lastnamei{} and its number is
- \unhbox\lastnumberi. The name of the first subsection is \unhbox\firstnameii{}
- and the corresponding number is \unhbox\firstnumberii. The name of the last
- subsection is \unhbox\lastnameii{} and its number is \unhbox\lastnumberii.}%
- \etocinline % cancels the automatic \par automatically before the TOC
- \etocsettocstyle {}{}
- \etocsetnexttocdepth{2}%
- \localtableofcontents % to be used at the top level of a Part.
- \endgroup
-}
-\end{verbatim}
-
-And now, the variant with macros rather than boxes (this variant as it
-stands here is for using within a section).
-\begin{verbatim}
-\makeatletter
-\newcommand*\firstsubname {} \newcommand*\lastsubname {}
-\newcommand*\firstsubnumber {} \newcommand*\lastsubnumber {}
-\newcommand*\thisspecialstatsaux{}
-\newcommand*{\thisspecialstats}{%
- \setcounter{mycounti}{0}%
- \def\thisspecialstatsaux{%
- \let\firstsubname\etocthelinkedname
- \let\firstsubnumber\etocthelinkednumber
- \def\thisspecialstatsaux{}}
- \begingroup
- \etocsetstyle{subsection} {} {}
- {\thisspecialstatsaux
- \stepcounter{mycounti}%
- \let\lastsubname\etocthelinkedname
- \let\lastsubnumber\etocthelinkednumber }
- {Here are some statistics for this section. It contains \arabic{mycounti}
- subsections. The name of its first is \emph{\firstsubname{}} and the
- corresponding number is {\firstsubnumber}. The name of the last
- subsection is \emph{\lastsubname{}} and its number is {\lastsubnumber}.}%
- \etocsettocstyle {}{}
- \etocinline
- \etocsetnexttocdepth {1}%
- \localtableofcontents % to be used within a section
- \endgroup
-}
-\makeatother
-\end{verbatim}
-
-\subsection{Using depth tags}
-\label{ssec:tocwithdepthtags}
-
-We want a TOC which will have a heading for each |\part| (except
-the last part with the code source, which we decide not to
-include), and will additionally open up \autoref{part:globalcmds}
-up to paragraphs. To achieve this we added to this source various
-\csb{etocdepthtag.toc} commands, and it remains now to set the
-levels for each tag using \csb{etocsettagdepth} (this was used
-earlier in this document, in \autoref{sec:secondexample}, within a
-group hence it did not affect the other tables of contents).
-
-However, the package line styles do not display paragraphs, and the
-standard line styles of the document class give too much vertical
-spacing (in this context) when displaying a Part heading in the TOC. So
-we cook up our own, quickly designed line styles, in the style of
-\autoref{sec:firstexample} (but with a way to put page numbers on the
-right which is more like the method used by \LaTeX2e's
-|\@dottedtocline|; and multi-line headings now leave empty the area
-underneath the numbers contrarily to the code from
-\autoref{sec:firstexample}). And after a few minutes for choosing
-lengths (now that this has been done once, it can be recycled easily) we
-get:
-
-\etocsetnexttocdepth {all}
-\begingroup
-\parindent 0pt
-\leftskip 0cm
-\rightskip 0.75cm
-\parfillskip -\rightskip
-\newcommand*{\EndParWithPagenoInMargin}
- {\nobreak\hfill
- \nobreak\makebox[0.75cm][r]{\mdseries\normalsize\etocpage}%
- \par}
-\renewcommand*\etoctoclineleaders
- {\hbox{\normalfont\normalsize\hbox to .75ex {\hss.\hss}}}
-\newcommand*{\EndParWithPagenoInMarginAndLeaders}
- {\nobreak\leaders\etoctoclineleaders\hfill
- \nobreak\makebox[0.75cm][r]{\mdseries\normalsize\etocpage}%
- \par }
-\etocsetstyle {part}
- {}
- {\leavevmode\leftskip 1cm\relax}
- {\bfseries\large\llap{\makebox[1cm][r]{\etocnumber\ \ }}%
- \etocname\EndParWithPagenoInMargin\smallskip}
- {}
-\etocsetstyle {section}
- {}
- {\leavevmode\leftskip 1.75cm\relax}
- {\bfseries\normalsize\llap{\makebox[.75cm][l]{\etocnumber}}%
- \etocname\EndParWithPagenoInMarginAndLeaders}
- {}
-\etocsetstyle {subsection}
- {}
- {\leavevmode\leftskip 2.75cm\relax }
- {\mdseries\normalsize\llap{\makebox[1cm][l]{\etocnumber}}%
- \etocname\EndParWithPagenoInMarginAndLeaders}
- {}
-\etocsetstyle {subsubsection}
- {}
- {\leavevmode\leftskip 4cm\relax }
- {\mdseries\normalsize\llap{\makebox[1.25cm][l]{\etocnumber}}%
- \etocname\EndParWithPagenoInMarginAndLeaders}
- {}
-\etocsetstyle {paragraph}
- {}
- {\leavevmode\leftskip 5.5cm\relax }
- {\mdseries\normalsize\llap{\makebox[1.5cm][l]{\etocnumber}}%
- \etocname\EndParWithPagenoInMarginAndLeaders}
- {}
-\etocsettagdepth {preamble} {none}
-\etocsettagdepth {overview} {part}
-\etocsettagdepth {arbitrarily}{part}
-\etocsettagdepth {surprising} {part}
-\etocsettagdepth {linestyles} {part}
-\etocsettagdepth {globalcmds} {paragraph}
-\etocsettagdepth {custom} {part}
-\etocsettagdepth {tips} {part}
-\etocsettagdepth {code} {none}
-\renewcommand\etoctoprule {\hrule height 3pt\relax }
-\renewcommand\etoctoprulecolorcmd {\color{blue}}
-\renewcommand\etocaftercontentshook
- {\medskip\begingroup \color{blue}\hrule height 3pt \endgroup }
-\etocruledstyle [1]{\Large\bfseries
- \fbox{\makebox[8cm]{A TOC using depth tags}}}
-\sloppy
-\tableofcontents
-
-\begin{verbatim}
-\etocsetnexttocdepth {all}
-\begingroup
-\parindent 0pt \leftskip 0cm \rightskip .75cm \parfillskip -\rightskip
-\newcommand*{\EndParWithPagenoInMargin}
- {\nobreak\hfill
- \nobreak\makebox[0.75cm][r]{\mdseries\normalsize\etocpage}%
- \par}
-\renewcommand*\etoctoclineleaders
- {\hbox{\normalfont\normalsize\hbox to .75ex {\hss.\hss}}}
-\newcommand*{\EndParWithPagenoInMarginAndLeaders}
- {\nobreak\leaders\etoctoclineleaders\hfill
- \nobreak\makebox[0.75cm][r]{\mdseries\normalsize\etocpage}%
- \par }
-\etocsetstyle {part}
- {}
- {\leavevmode\leftskip 1cm\relax}
- {\bfseries\large\llap{\makebox[1cm][r]{\etocnumber\ \ }}%
- \etocname\EndParWithPagenoInMargin\smallskip}
- {}
-\etocsetstyle {section}
- {}
- {\leavevmode\leftskip 1.75cm\relax}
- {\bfseries\normalsize\llap{\makebox[.75cm][l]{\etocnumber}}%
- \etocname\EndParWithPagenoInMarginAndLeaders}
- {}
-\etocsetstyle {subsection}
- {}
- {\leavevmode\leftskip 2.75cm\relax }
- {\mdseries\normalsize\llap{\makebox[1cm][l]{\etocnumber}}%
- \etocname\EndParWithPagenoInMarginAndLeaders}
- {}
-\etocsetstyle {subsubsection}
- {}
- {\leavevmode\leftskip 4cm\relax }
- {\mdseries\normalsize\llap{\makebox[1.25cm][l]{\etocnumber}}%
- \etocname\EndParWithPagenoInMarginAndLeaders}
- {}
-\etocsetstyle {paragraph}
- {}
- {\leavevmode\leftskip 5.5cm\relax }
- {\mdseries\normalsize\llap{\makebox[1.5cm][l]{\etocnumber}}%
- \etocname\EndParWithPagenoInMarginAndLeaders}
- {}
-\etocsettagdepth {preamble} {none}
-\etocsettagdepth {overview} {part}
-\etocsettagdepth {arbitrarily}{part}
-\etocsettagdepth {surprising} {part}
-\etocsettagdepth {linestyles} {part}
-\etocsettagdepth {globalcmds} {paragraph}
-\etocsettagdepth {custom} {part}
-\etocsettagdepth {tips} {part}
-\etocsettagdepth {code} {none}
-\renewcommand\etoctoprule {\hrule height 3pt\relax }
-\renewcommand\etoctoprulecolorcmd {\color{blue}}
-\renewcommand\etocaftercontentshook
- {\medskip\begingroup \color{blue}\hrule height 3pt \endgroup }
-\etocruledstyle [1]{\Large\bfseries
- \fbox{\makebox[8cm]{A TOC using depth tags}}}
-\sloppy
-\tableofcontents
-\endgroup
-\end{verbatim}
-\endgroup
-
-\subsection{Typesetting the TOC as a table (the old way)}
-\label{ssec:tocastableold}
-
-Due to, among other things, the fact that alignment cells create and close
-groups, and that by default definitions of \csb{etocname}, \csb{etocnumber},
-\csb{etocpage} made by \etoc are local, it was not easy to typeset a TOC as
-table with \etoc, prior to release |1.08|.
-
-Not only \csb{etocname} etc... caused a problem, but also the basic
-redefinition of \csa{contentsline} was made by \etoc only after the
-first argument to \csb{etocsettocstyle} had been executed, hence if this
-argument were to open a tabular, the \etoc redefinition of
-\csa{contentsline} would be done in the first cell of the first row and
-get lost thereafter.
-
-Thus one had to resort to the technique explained in \autoref{tocastree}
-of using the execution of \csa{tableofcontents} as a way to store data
-which was then displayed later.
-
-For the record, here is how the TOC from \autoref{sec:tocastable} was
-coded in the old days. We don't have here the problems with the
-positioning of |\hline|'s we face with the newer method; on the other
-hand we must manipulate token registers which are not familiar to most
-\LaTeX{} users (macros could be used, but would be more cumbersome,
-except perhaps if using the \eTeX{} \csa{unexpanded}).
-
-The method here is the most powerful because it filters out of the
-|.toc| file only the data we want (the other things are not ignored,
-they are executed but hopefully do not create havoc; typically they are
-language changing instructions, or updates to certain counters, etc...),
-and we are less susceptible to fall potential victims of various
-external macros inserted in the |.toc| file by other packages.
-
-\begin{verbatim}
-\newtoks\toctabletok
-\newcommand*\appendtotok[2]{% #1=toks variable, #2=macro, expands once #2
- #1\expandafter\expandafter\expandafter {\expandafter\the\expandafter #1#2}}
-
-\newcommand*\PreparePart{%
- \toks0 \expandafter{\etocthelinkednumber}%
- \toks2 \expandafter{\etocthelinkedname}%
- \toks4 \expandafter{\etocthelinkedpage}%
- \edef\toctablepiece {\noexpand\hline
- \noexpand\strut\the\toks0 &\noexpand\bfseries\the\toks2
- &\the\toks4 \noexpand\\\noexpand\hline}%
-}
-\newcommand*\PrepareSection{%
- \toks0 \expandafter{\etocthelinkednumber}%
- \toks2 \expandafter{\etocthelinkedname}%
- \toks4 \expandafter{\etocthelinkedpage}%
- \edef\toctablepiece {\the\toks0 &\the\toks2 &\the\toks4 \noexpand\\}%
-}
-% new version for 1.07k, 2014/03/06
-\newcommand*{\PrepareSubsection}{%
- \toks0 \expandafter{\etocthelinkednumber}%
- \toks2 \expandafter{\expandafter\itshape\etocthelinkedname\strut}%
- \toks4 \expandafter{\expandafter\itshape\etocthelinkedpage}%
- \edef\toctablepiece{&\noexpand\makebox[1cm][c]{\the\toks0}%
- \noexpand\parbox[t]{\dimexpr6cm-\tabcolsep\relax}
- {\noexpand\sloppy\the\toks2}%
- &\the\toks4 \noexpand\\}%
-}
-
-\begingroup
-\etocsetstyle{part}{}{}{\PreparePart \appendtotok\toctabletok\toctablepiece}{}
-
-\etocsetstyle{section}{}{}{\PrepareSection \appendtotok\toctabletok\toctablepiece}{}
-
-\etocsetstyle{subsection}{}{}{\PrepareSubsection\appendtotok\toctabletok\toctablepiece}{}
-
-\etocsettocstyle
- {\toctabletok{\hypersetup{hidelinks}%
- \begin{longtable}{|>{\bfseries}c|p{7cm}|r|}\hline
- \multicolumn{3}{|c|}{\Large\bfseries\strut TABLE OF CONTENTS}%
- \\\hline\hline}}
- {\global\toctabletok\expandafter{\the\toctabletok\hline\end{longtable}}}
-\etocsettocdepth {subsection}
-\tableofcontents
-\the\toctabletok
-\endgroup
-\end{verbatim}
-
-\subsection{Compatibility with other packages}
-\label{etocaftertochook}
-
-The contents of the |.toc| file (if it already exists) are read into memory by
-\etoc once, at the time of |\begin{document}|.\footnote{New with |1.07m|.
- Earlier versions read the |.toc| file at the time of
- \csa{usepackage\{etoc\}}. Thanks to Denis Bitouzé who signaled a Babel
- related problem, which turned out to be caused by this.}
-
-\begin{framed}
- One should load \etoc \emph{after} \texttt{babel}. This is in order for
- |babel|'s shorthands to be active at the time when \etoc loads the |.toc|
- file.
-\end{framed}
-
-The |.toc| file remains available
- to other packages for read operations until the location of the first table
- of contents at which time a write stream is opened by \etoc and from that
- point the file is erased until its contents are again written to the disk by
- \LaTeX{} at the end of the compilation.
-
-\etoc loads the package |multicol|.
-
-\etoc requires the |.toc| file to use the |\contentsline| macro (possibly
-patched by other packages). It is thus incompatible with the |beamer| class.
-However, if |beamer| is used in an article mode, i.e., with the article class
-in conjunction with the |beamerarticle| package, then \etoc should work.
-
-\etoc is |hyperref| aware and hopefully |hyperref| compatible: the macros
-\csa{etocname}, \csa{etocnumber}, and \csa{etocpage} contain the |hyperref|
-links, if present (note that the \emph{linktoc=all} option of |hyperref| tells
-it to put a link also in the page number corresponding to a given toc entry).
-For example, the tables of contents of the present document are all fully
-linked. It doesn't matter whether \etoc or |hyperref| is loaded first.
-
-Release |1.07k| adds compatibility with package
-|tocloft|:\footnote{\url{http://ctan.org/pkg/tocloft}} steps are
-taken to prevent the redefinition of |\tableofcontents| done by
-|tocloft| at |\begin{document}|.
-%
-As long as \etoc is left in compatibility mode the customization done by
-|tocloft| will be obeyed, for both the line styles and the TOC title.
-One may still benefit from the \emph{depth tags} management by \etoc,
-from its |\localtableofcontents|, from its |\label+\ref| mechanism. One
-may use |\etocsetstyle| to define via \etoc the layout for one TOC and
-then use rather |tocloft| for another one, if |\tableofcontents| follows
-\csb{etocstandardlines} and \csb{etocstandarddisplaystyle}. In this
-compatibility mode |\etocsetlevel{division unit}{6}| will render
-invisible the chosen division level, but exchanging levels is otherwise
-not possible.
-
-\begin{framed}
- One should load \etoc \emph{after} \texttt{tocloft}. A warning is
- issued if otherwise.
-\end{framed}
-
-Release |1.07l| has also improved the compatibility with the |memoir| class: its
-|appendix| level has been made known to \etoc. It is at the same level as
-|chapter|, thus the chapter line style should possibly do a test for some user
-defined boolean whose activation may be added to the |.toc| file at the suitable
-location via |\addtocontents{toc}{..}|, if one needs to distinguish the two
-kinds of divisions.
-
-\etoc can not really cohabit with packages modifying the \csa{tableofcontents}
- command: some sort of truce can be achieved if \etoc is loaded last, hence is
- the winner.
-
- \begin{framed}
- Do not modify the |\tableofcontents| command like this:
- \centeredline{|\let\oldtableofcontents\tableofcontents|}
- \centeredline{|\renewcommand\tableofcontents{\oldtableofcontents\mystuff}|}
- as this will make the |\label/\ref| mechanism impossible. Rather you may do
- \centeredline{|\renewcommand\etocaftertochook{\mystuff}|} and there is
- also \csb{etocaftercontentshook} which is executed a bit
- earlier\footnotemark{}
- just before
- the
- closing part of the toc display style (and thus still within a group.)
- \end{framed}
-\footnotetext{contrarily to \csa{etocaftertochook},
- \csa{etocaftercontentshook} is not executed if the |tocdepth| did not
- allow the printing of the TOC.}
-
- \etoc used to be incompatible with package
- |tocvsec2|\footnote{\url{http://ctan.org/pkg/tocvsec2}}; it now cohabits, sort
- of, as it deactivates |tocvsec2|'s modification of |\tableofcontents| (done in
- the style above) and also cancels its other |toc|-related macros, but
- reimplements partially their functionality with \csb{etocsettocdepth.toc}. By
- the way, at least two latex runs are necessary for new uses of this command in
- a document to have an effect in tables of contents.
-
-When a \localtoc is inserted by the user in the document, a
-line containing an \etoc inner command and an identification
-number is added to the |.toc| file. The correct local table of
-contents will be displayed only on the next |latex| run.
-
-It is possible to customize (using package |tocloft| for
-example) throughout the document the macros \csa{l@section},
-\csa{l@subsection} ... and the effect will be seen in the next
-table of contents typeset by \etoc in compatibility mode.
-
-It is possible to use simultaneously \etoc and
-{\color{niceone}|tableof|}\footnote{\url{http://ctan.org/pkg/tableof}}. Release
-|1.08| of \etoc requires at least version |1.4a| of |tableof|. If
-\csb{etocglobaldefs} is put in the preamble, this must be after the loading of
-package |tableof|. {\color{niceone}|tableof|} command \csa{nexttocwithtags}
-should work as expected.
-
-{\color{niceone}|tableof|} commands \csa{tableof}, \csa{tablenotof}, ... will
-typeset the (a priori global) table of contents according to the document
-class defaults, obeying the \etoc depth tags; as explained in the |tableof|
-documentation they do not typeset a TOC title. They should \emph{not} be used
-in case \csb{etocglobaldefs} was issued before, except if its scope has been
-terminated since then, or \csb{etoclocaldefs} has cancelled its influence.
-
-\subsection{\TeX nical matters}
-
-The \csa{etocname}, \csa{etocnumber}, \csa{etocpage} commands are protected against
-premature expansion. They contain suitable |hyperref| links if package
-|hyperref| is loaded and active for the TOC. The commands \csa{etoclink} and
-\csa{etocifnumbered} are also protected against premature expansion.
-
-On the other hand \csa{etocthename}, \csa{etocthenumber},
-\csa{etocthepage} do not represent |hyperref| links, and are
-\emph{not} protected against expansion.
-
-The commands such as \csa{etocsetstyle}, \csa{etocsetlevel},
-\csa{etocsettocstyle}, \csa{etocmulticolstyle},
-\csa{etocruledstyle}, \csa{etocframedstyle} obey \LaTeX{}'s
-groups. All TOCs are typeset inside groups.
-
-\subsection{Errors and catastrophes}
-
- After using \csa{etocsetstyle} for one level, the remaining
- uncustomized levels use the \etoc default styles (those
- which are activated by \csa{etocdefaultlines}). One has to
- make sure that all levels needed for the next table of
- contents are mutually compatible: in particular the \etoc
- default line styles expect each to be started in ``vertical mode''.
-
- When using multiple \toc commands in a document, one should beware from adding
- typesetting instructions directly in the |.toc| file, as they will be executed
- by \etoc for all TOCs: even for a \localtoc it doesn't matter if that
- instruction seems to concern material outside of its scope, it will get
- executed nevertheless. If absolutely necessary (but this should never be)
- these instructions should be done in such a way that they can be activated or
- deactivated easily from the document source, as need be.
-
- As is usual with toc and labels, after each change, one has
- to run latex a certain number of times to let the produced
- document get its final appearance (at least twice).\par
-
-\clearpage
-\etocdepthtag.toc {code}
-
-\part{The code}
-
-\section{Timestamp}
-
-This is the documentation as of \texttt{\etocdocdate}, printed from the
-source file with the time stamp \texttt{\etocdtxtimestamp}. The package
-version is \texttt{\etocpkgversion}, of \texttt{\etocpkgdate}.
-
-% STOP ENGLISH VERSION
-^^Afi
-
-^^Acatcode92 12
-
-^^Aifnum^^AForDeutsch=1
-
- ^^Acatcode92 0
-
-
-% START GERMAN (DEUTSCH) VERSION
-\bookmark[named=FirstPage,level=1]{Titelseite}% 10 octobre 2013.
-
-\begin{center}
- {\normalfont\Large Das \etoc-Paket}\\
- \textsc{Jean-François Burnol}\par
- \footnotesize \ttfamily jfbu (at) free (dot) fr\\
- Paketversion: \etocDEpkgversion\ (\etocDEpkgdate) \let\thefootnote\empty
- \footnote{Original Dokumentationzeitstempel: ``\etocDEdocdate''.\par
- Übersetzt ins Deutsche von Felix Baral-Weber, Jenny Rothkrämer-Vogt, Daniel
- Büttner, Claudia Dahl, Christian Otto und Christine Römer (FSU Jena).
- Hinweise zur Übersetzung an Christine\_Roemer at t-online dot de.}\par
-\end{center}
-\setcounter{footnote}{0}
-
-\etocdepthtag.toc {preamble}
-%----
-% MAIN TOC
-%
-\etocsettocdepth {subsubsection}
-\etoctoclines
-\etocmarkboth\contentsname
-\etocmulticolstyle[1]
- {\pdfbookmark[1]{Inhaltsverzeichnis}{MAINTOC}%
- \noindent\bfseries\Large
- \leaders\hrule height1pt\hfill
- \MakeUppercase{Inhaltsverzeichnis}}
-\begingroup
- \etocsetlevel{subsection}{3}
- \etocsetlevel{subsubsection}{6}
-\tableofcontents \label{toc:main}
-\endgroup
-
-\phantomsection\addcontentsline{toc}{section}{\abstractname}
-\begin{abstract}
- Das \etoc-Paket gibt dem Nutzer lückenlose Möglichkeiten, die Einträge des
- Inhaltsverzeichnis individuell über \emph{Name}, \emph{Nummer}, und
- \emph{Seitenzahl} für jede gliedernde Einheit zu setzen. Dieses wird durch die
- Definition von \emph{Zeilenstilen (line-styles)} für jede Unterteilungsstufe
- des Dokuments realisiert. Das Paket bietet darüber hinaus seinen eigenen
- Zeilenstile. Einfachere werden als Beispiele in dieser Dokumentation
- angeboten. Die einfachste Nutzung wird durch die Verwendung der
- Layout-Hilfsmittel, von Paketen die sich mit Listen-Umgebungen beschäftigen,
- gewährt.
-
- In Hinsicht auf das \emph{globale Inhaltsverzeichnis} bietet \etoc\
- vordefinierte Stile, die auf der Mehrspaltenansicht mit optionalen,
- unterstrichenen Titeln oder eingerahmten Inhalten basieren.
-
- Der \csa{tableofcontents}-Befehl kann beliebig mehrfach benutzt werden. Er hat
- die Variante \csa{localtableofcontents}, welche die Inhaltsangabe 'local' zur
- aktuellen Dokumenten-Sektion ausgibt. Eine Erweiterung der
- \csa{label}/\csa{ref}-Syntax erlaubt die Reproduktion (mit anderem Layout)
- einer lokalen Inhaltsangabe, die irgendwo anders im Dokument definiert wurde.
-
- Mit "`tiefen Tags"' erhält man noch feinere Kontrolle über jede Inhaltsangabe
- und darüber, welche unterteilende Einheit angezeigt werden soll, oder nicht.
-
- Mit \emph{Kompatibilismus} wird die Formatierung der Dokumentklasse geerbt
- (die womöglich von anderen Paketen verändert wurde); und die Formatierung, die
- von der Dokumentklasse (die womöglich von anderen Paketen verändert wurde)
- geerbt wird.
-
- Die Zuweisung von Ebenen zu den unterteilenden Einheiten kann zu jeder Zeit
- geändert werden und \etoc kann dadurch in einer ziemlich generellen Weise
- genutzt werden, um selbsterstellte 'Listen von' zu erzeugen. Keine
- Zusatzdateien werden zusätzlich zu der Standard-|.toc|-Datei benutzt.
-\end{abstract}
-
-\section{Vorwort}
-
-Andere populäre Pakete, die sich mit Inhaltsangaben befassen, sind
-|tocloft|, |titletoc| und |minitoc|. Warum also ein anderes?
-Ich habe \etoc erst für mich selbst entwickelt und
-später von den anderen Paketen erfahren.
-
-Wie es auch in der |tocloft|-Dokumentation erklärt wird, ist das
-Standard-\LaTeX -Layout für Inhaltsangaben in den Klassen-Definitionen
-begraben. Im Besonderen sind die meisten Längen hart codiert und der
-einzige Weg für den Benutzer, sie zu ändern, ist, die Klasse in den
-Dokumenten-Ordner zu kopieren und dann die Längen zu ändern.
-Die vernünftigere Alternative ist die Benutzung eines auf das Veränderungsziel
-gerichteten Pakets, wie |tocloft| oder eine andere flexible Dokumentklasse.
-
-Freilich, obwohl jetzt hoffentlich nichts mehr hart codiert ist,
-muss man noch immer das Paket oder die Klassen-Definitionen durchgehen.
-Das bedeutet, dass man sich viele (vermutlich große) Menge an Makros
-merken muss, die nur dieser Aufgabe dienen. Und man wird immer
-auf die Anpassung eines zu Anfang gegebenen Layouts eingeschränkt sein.
-
-Der Sinn von \etoc ist ein anderer. Der Nutzer wird sich mit
-\emph{Name}, \emph{Nummer} und der \emph{Seitenzahl} beschäftigen.
-Diese korresponieren mit jeder Dokumenten-Unterteilung (und können in
-einer Zeile der |.toc|-Datei gefunden werden). Sie können, wenn gewünscht,
-durch die Befehle \csb{etocname}, \csb{etocnumber} und \csb{etocpage}
-abgerufen werden.
-
-\etoc scheint (mindestens teilweise) mit den Dokument-Klassen |article|,
-|book|, |report|, |scrartcl|, |scrbook|, |scrreprt| und |memoir|
-kompatibel zu sein. Seit der Version |1.07k| ist es möglich \etoc
-gleichzeitig mit |tocloft| zu benutzen.
-
-\section{Lizenz}
-
-\begingroup\ttfamily\small\hyphenchar\font -1
- \parindent0pt
- \obeyspaces\obeylines
-\etocLicense\endgroup
-
-
-\clearpage
-\etocsettocdepth {subsection}
-
-\etocdepthtag.toc{overview}
-
-\part{Überblick}\label{part:overview}
-
-\thispartstats
-
-\invisiblelocaltableofcontents \label{toc:overview}
-
-\section{Muss ich Computerfreak sein, um \etoc benutzen zu können?}
-
-Nicht wirklich. Der einfachste Weg ist die Benutzung von
-|enumerate|-Umgebungen mit den Anpassungsmöglichkeiten von
-Paketen wie |enumitem|, \footnote{\url{http://ctan.org/pkg/enumitem}}
-um von \etoc aus der |.toc|-Datei die abgerufenen Daten anzuzeigen.
-Die Daten bestehen aus \emph{Name} (\csb{etocname}), \emph{Gliederungsnummer}
-(\csb{etocnumber}) und \emph{Seitenzahl} (\csb{etocpage}).
-
-Dieses wird \hyperref[toc:a]{zu Beginn} von \autoref{part:linestyles}
-gezeigt. Anspruchsvollere Beispiele würden anspruchsvollere
-|enumitem|-Optionen benutzen. Man könnte nun sagen, dass der Nutzer
-sich einige Anpassungen merken muss. Und das ist auch so, aber die
-Syntax und Optionsbezeichnungen, die es zu behalten gilt, sind
-in keinster Weise ähnlich.
-
-Die Methode wird \hyperref[sec:firstexample]{später}
-(\autoref{sec:firstexample}) erklärt. Dafür ist ein wenig Wissen über
-|\leftskip|, |\rightskip| usw. notwendig. Und eine Ausarbeitung , deren
-Code kann man hier (\autoref{ssec:tocwithdepthtags}) finden, die Nachahmung des
-Standardaussehens einer Inhaltsangabe.
-
-Wie Sie beim Lesen dieser Anleitung noch sehen werden, ist \etoc
-ziemlich vielfältig (ganz besonders, weil es erlaubt, die Hierarchie jeder
-unterteilenden Einheit des Dokuments zu re-definieren) und man kann damit
-überraschende Effekte erreichen: \autoref{part:surprising} handelt davon. Mehr
-davon gibt es noch in \autoref{part:tipsandtricks}.
-
-\begin{framed}
-\setcounter{mycounti}{0}%
- \etocinline
-\etocsetlevel{part}{1}
-\etocsetlevel{chapter}{1}
-\etocsetlevel{visibletoc}{0}
-\etocsetstyle{visibletoc}
- {}
- {\stepcounter{mycounti}}
- {}
- {}
-\etocsettocstyle{}{}
-\etocsetnexttocdepth{0}
-\tableofcontents
-Ein ganz besonders wichtiger Aspekt von \etoc ist, dass es darauf ausgelegt ist,
-viele Inhaltsangaben in dem selben Dokument zu erzeugen, \emph{Mit nur einer
- |.toc|-Datei.} Die gegenwärtige Dokumentation enthält \arabic{mycounti}
-sichtbare Inhaltsangaben (und ein paar unsichtbare). Sie benutzt dabei nur eine
-|.toc|-Datei!\footnotemark{} Darum sollte man zweimal nachdenken, bevor man
-manuell extra Befehle zu der |.toc|-Datei hinzufügt (siehe
-\autoref{sec:addingtotoc}).
-\end{framed}
-
-\footnotetext{Das Selbstzählen wurde durch eine Inhaltsangabe erreicht, die
-in einen gerahmten Paragraphen eingesetzt wurde! \dots Die Technik für diese Art
-von Effekt wird später erklärt.}
-
-
-\subsection{Beschränkungen in der Benutzung von Listen-Umgebungen für
-Inhalsangaben}
-\label{ssec:limitations}
-
-Es gibt ein paar Einschränkungen für das Nutzen von Listen-Umgebungen
-beim Setzen der TOCs. Eine davon liegt dem
-Geltungsbereichsbeschränkungen der Umgebungen inne. Die |.toc|-Datei
-könnte neben den Informationen zum Stil einige andere Befehle
-beinhalten, die Probleme hervorrufen können
-(\LaTeX -Umgebungen schaffen Gruppen.).
-
-Darum machen die eingebauten "`Zeilenstile"' (line styles), wie sie von \etoc
-vorgeschlagen werden (die durch die \hyperref[toc:main]{Hauptinhaltsangabe} in
-diesem Dokument gezeigt werden) keinen Gebrauch von Umgebungen. Tatsächlich
-nutzt in dieser Gebrauchsanweisung nur die \hyperref[toc:a]{Inhaltsangabe} zu
-Beginn von \autoref{part:linestyles} und in \autoref{toc:allsubsections}
-e\texttt{numerate}-Umgebungen, um Zeilenstile anzugeben.
-
-\section{Zeilenstile und Stile der Inhaltsangabe (toc display style)}
-
-Eine Unterscheidung muss zwischen den \emph{Zeilenstilen},
-\emph{z.\,B.} der Art und Weise wie Namen, Kapitelnummern und
-Seitenzahlen auf jedem Level angezeigt werden und dem
-\emph{Inhaltsangabenstil} (mangels einer besseren Bezeichnung)
-gemacht werden. Dieser sagt, wie die Titel gesetzt werden sollen,
-ob oder nicht ein Eintrag in die |.toc|-Datei gemacht werden soll,
-ob oder nicht der Inhalt mit mehreren Spalten gesetzt werden soll,
-usw..., der letztere wird von \csa{etocsettocstyle} (oder einem
-höherrangigen Befehl) geregelt. Das erste wird von
-\csa{etocsetstyle} initialisiert.
-
-\subsection{\csbhyp{etocsetstyle} für den Zeilenstil}
-
-Das ist der Befehl, der \etoc sagt, was es mit \csa{etocname}, \csa{etocnumber},
-und \csa{etocpage} machen soll. Er hat fünf Pflichtargumente: Das erste ist der
-Name der unterteilenden Einheit: Im Vorhinein bekannte Namen sind |book|,
-|part|, |chapter|, |section|, |subsection|, |subsubsection|, |paragraph|,
-|subparagraph| und viele weitere können anhand dem \csb{etocsetlevel}-Befehl
-einem (numerischen) Level zugewiesen werden.\footnote{Mit der
- \texttt{memoir}-Dokumentklasse kennt \etoc \texttt{Appendix} als
- Kapitelüberschrift.}
-
-
-%% Änderungen zur Übersetzung ins Deutsche:
-%% jf b has added here forgotten emphasized text for 2)&3) and
-%% removed various \newline.
-Die vier anderen Argumente von \csb{etocsetstyle}
-spezifizieren:
-1) \emph{Was zu tun ist, wenn dieses Level zuerst nach einem höheren
- auftritt,}
-2) \& 3) (Zwei Argumente, ein 'Präfix' und ein 'Inhalt')
-\emph{Was zu tun ist, wenn ein neuer Eintrag dieses Typs gefunden wird,}
-und 4) \emph{Das letzte Argument ist der Code, der ausgeführt
- wird, wenn eine unterteilende Einheit von höherer Wichtigkeit wieder von oben
- getroffen wird.}
-
-
-\subsection{\csbhyp{etocsettocstyle} für den Stil der Inhaltsangabe}
-
-Der \csb{etocsettocstyle}-Befehl erlaubt es festzulegen,
-was vor und nach den Zeileneinträgen eines Inhaltsverzeichnis
-passieren soll, und im Speziellen wie die Titel ausgegeben
-werden sollen. Er hat zwei Argumente. Das erste wird vor
-der Inhaltsangabe ausgeführt (typischerweise wird es Inhalte
-ausgeben und definiert passende Markierungen für die
-Seitenüberschriften). Der Zweite wird nach der Inhaltsangabe
-ausgeführt.
-
-\etoc bietet vier (anpassbare) höhere Inhaltsabgabenstile:
-\csb{etocmulticolstyle}, \csb{etoctocstyle},
-\csb{etocruledstyle} und \csb{etocframedstyle}.
-Alle nutzen das |multicol|-Paket mit standardmäßig zwei
-Spalten (Einspaltenmodus kann durch das optionale Argument
- |[1]| erreicht werden).
-
-Diese Befehle müssen entweder von \toc oder \localtoc gefolgt sein.
-
-\subsection{Kompatibilismus}\label{ssub:compat}
-\label{etoctoclines}
-\label{etocstandardlines}
-
-Vor den "`Zeilenstilen"' und den "`Inhaltsangabenstilen"' besteht
-die Möglichkeit in den Kompabilitätsmodus zu wechseln, der die
-Standardeinstellungen der Dokumentenklasse nimmt.
-\footnote{Für den "`Inhaltsangabenstil"' überprüft \etoc, ob
-es die Klassen kennt, wenn nicht, fällt es zur |article|-Klasse
-zurück. Es wird auch überprüfen, ob \texttt{tocloft} die
-Inhaltsangaben-Datei verändert hat.}
-Dieses wir wie folgt aktiviert:\\
-\makebox[5.2cm][l]{\csb{etocstandardlines}}
- |% `Zeileneinträge' wie ohne \usepackage{etoc}|\\
-\makebox[5.2cm][l]{\csb{etocstandarddisplaystyle}}
- |% `Inhaltsstil' wie ohne \usepackage{etoc}|
-
-Wenn der Befehl \csa{etocsetstyle} \emph{noch nicht in der Präambel benutzt
-worden ist}, wird das Paket in |\begin{document}| sitzen (in diesem
-Kompatibilismus). Folglich sollte \csa{usepackage\{etoc\}} hoffentlich
-nichts am Aussehen eines im Vorhinein vorhandenen Dokuments der Klassen
-|article|, |book|, |report|, |scrartcl|, |scrbook|, |scrreprt| und |memoir|
-ändern.
-
-Jede Benutzung von \csa{etocsetstyle} in der \emph(Präambel des Textkörpers) des
-Dokuments schaltet den Kompabilitäsmodus für Zeilenstile aus, behält ihn aber
-für den Inhaltsabgabenstil.
-
-Man kann ihn für Zeilenstile anhand von \csb{etocstandardlines}
-wieder aktivieren. \csb{etoctoclines} reaktiviert Zeilenstile wie
-Sie mit der Hilfe von \csa{etocsetstyle} definiert wurden, wenn deren
-Gültigkeitsbereich nicht auf eine Gruppe oder eine Umgebung beschränkt
-war.
-
-Der Befehl \csb{etocdefaultlines} setzt den Zeilenstil darauf zurück,
-wie er intern von \etoc in \autoref{etocdefaultlines} beschrieben wurde.
-
-Sogar wenn \csb{etocsetstyle} benutzt wurde, bleibt der globale Stil
-zu Beginn, wie er in der Dokumentenklasse definiert wurde (oder von dem
-|tocloft| Paket). Man muss den Befehl \csb{etocsettocstyle} oder seine
-Varianten setzen, um diesem Kompatibilitätsmodus auf dem
-"`Inhaltsangebenstil"'-Level zu beenden. Er wird reaktiviert,
-wenn \csb{etocstandarddisplaystyle} benutzt wird.
-
-\section{Ein erstes Beispiel}
-\label{sec:firstexample}
-
-Hier sehen sie ein erstes Beispiel zur Beschreibung der Zeilenform.
-Wir fügen die Quelldatei direkt nach dem Start von \autoref{part:overview} ein:
-
-\centeredline{|\invisiblelocaltableofcontents \label{toc:overview}|}
-%
-Dieses erstellt ein Label |toc:overview|, das wir von jeder Stelle im Dokument
-benutzen können:
-%
-\centeredline{|\tableofcontents \ref{toc:overview}|}
-%
-Und da wir |\invisible...|,\footnote{Das ist eine Abkürzung, um die |tocdepth|
- temporär auf |-3| zu setzen. Dieses sagt \etoc, die Inhaltsangabe und die
- Überschrift nicht auszugeben.} benutzt haben, existiert die lokale
-Inhaltsangabe nur durch seine Klone anderswo im Dokument.
-
-Anhand von \csb{etocdefaultlines} oder dem Stil der Standard-Dokumentklasse,
-anhand von \csb{etocstandardlines}, könnten wir auch die Zeilenform benutzen,
-die von \etoc definiert wird. Hier waren wir jedoch ein wenig ehrgeiziger und
-wollten unser eigenen Stil anlegen. Die Technik ist einfach: Jede Überschrift
-ist an sich ein eigener Paragraph, der sich über mehrere Zeilen erstrecken kann;
-es ist für seinen |\leftskip| selbst verantwortlich.
-
-\begingroup
-\parindent 0pt
-\parfillskip 0pt
-\leftskip 0cm
-\rightskip 1cm
-\etocsetstyle {section}
- {}
- {\leavevmode\leftskip 0cm\relax}
- {\bfseries\normalsize\makebox[.5cm][l]{\etocnumber.}%
- \etocname\nobreak\hfill\nobreak
- \rlap{\makebox[1cm]{\mdseries\etocpage}}\par}
- {}
-\etocsetstyle {subsection}
- {}
- {\leavevmode\leftskip .5cm\relax }
- {\mdseries\normalsize\makebox[1cm][l]{\etocnumber}%
- \etocname\nobreak\hfill\nobreak
- \rlap{\makebox[1cm]{\etocpage}}\par}
- {}
-\etocsetstyle {subsubsection}
- {}
- {\leavevmode\leftskip 1.5cm\relax }
- {\mdseries\normalsize\makebox[1cm][l]{\etocnumber}%
- \etocname\nobreak\hfill\nobreak
- \rlap{\makebox[1cm]{\etocpage}}\par}
- {}
-\etocruledstyle[1]{\bfseries \Large Mein erstes \etoc: TOC von
- \autoref{part:overview} (\nameref{part:overview})}
-\tableofcontents \ref {toc:overview}
-\endgroup
-
-Dieses ist ein einfaches Design, das keine Maßnahmen zum Zeilenumbruch
-bereitstellt. Diese sollten zwischen Abschnitten und Unterabschnitten, etc.
-unterbunden werden, da wir es nur für die Inhaltsangabe von diesem Abschnitt
-nutzen. Durch die Abschnitte als höchste Ebene entstand keine Notwendigkeit,
-einen Stil für den ganze Teil zu erstellen. (Wir definierten einen
-Unterabschnitt-Zeilenstil, aber wie sich herausstellt, gibt es keine
-Unterabschnitte in diesem Teil). Die zwei Befehle, die benutzt wurden,
-spezifizieren den Zeilen-Stil (\csb{etocsetstyle}) und den globalen
-Inhaltsausgabestil (\csb{etocruledstyle}).
-
-Das |\rightskip| wird von allen angewandt und schafft Platz, wo die Seitenzahlen
-gedruckt werden. Einzelheiten dieser Technik werden in dem
-\autoref{sec:secondexample} und \autoref{ssec:tocwithdepthtags} benutzt. Hier
-wird eine Inhaltsangabe mit Abschnitten und Paragraphen verwendet. Beide
-erlauben mehrzeilige Überschriften und nutzen einer Technik, die Seitenzahlen
-mit dem richtigen Seitenabstand auszugeben. Dieses wurde von der Funktionsweise
-von Makros aus \LaTeX2e's |\@dottedtocline| inspiriert.
-
-\begin{verbatim}
-\begingroup\parindent 0pt \parfillskip 0pt \leftskip 0cm \rightskip 1cm
-\etocsetstyle {section}
- {}
- {\leavevmode\leftskip 0cm\relax}
- {\bfseries\normalsize\makebox[.5cm][l]{\etocnumber.}%
- \etocname\nobreak\hfill\nobreak
- \rlap{\makebox[1cm]{\mdseries\etocpage}}\par}
- {}
-\etocsetstyle {subsection}
- {}
- {\leavevmode\leftskip .5cm\relax }
- {\mdseries\normalsize\makebox[1cm][l]{\etocnumber}%
- \etocname\nobreak\hfill\nobreak
- \rlap{\makebox[1cm]{\etocpage}}\par}
- {}
-\etocsetstyle {subsubsection}
- {}
- {\leavevmode\leftskip 1.5cm\relax }
- {\mdseries\normalsize\makebox[1cm][l]{\etocnumber}%
- \etocname\nobreak\hfill\nobreak
- \rlap{\makebox[1cm]{\etocpage}}\par}
- {}
-\etocruledstyle[1]{\bfseries \Large My first \etoc: TOC von
- \autoref{part:overview} (\nameref{part:overview})}
-\tableofcontents \ref {toc:overview}
-\endgroup
-\end{verbatim}
-
-\section{Ein zweites Beispiel}
-\label{sec:secondexample}
-
-Dieses zweite Beispiel zeigt nur den Inhalt von \autoref{part:linestyles} und
-\autoref{part:globalcmds}. Diese Auswahl wird durch die Technik von \emph{depth
- tags} realisiert, die in \autoref{etocsettagdepth} und
-\autoref{ssec:tocwithdepthtags} beschrieben wird. Dessen Layout ist in etwa wie
-das von der \hyperref[toc:main]{Hauptinhaltsangabe}, obwohl die Zeilenstile ganz
-anders programmiert sind.
-
-\begingroup
-\newcommand*{\DotsAndPage}
-{\nobreak\leaders\hbox{\bfseries\normalsize\hbox to .75ex {\hss.\hss}}%
- \hfill\nobreak
- \makebox[\rightskip][r]{\bfseries\normalsize\etocpage}\par}
-
-\etocsetstyle {part}
-{\parindent 0pt
- \nobreak
- \etocskipfirstprefix}
-{\pagebreak[3]\bigskip}
-{\large\rmfamily\bfseries\scshape\centering
- \etocifnumbered{Part \etocnumber{} -- }{}\etocname\par}
-{}
-
-\etocsetstyle {section}
-{\leftskip 0pt \rightskip .75cm \parfillskip-\rightskip
- \nobreak\medskip
- \etocskipfirstprefix}
-{\leftskip 0pt \rightskip .75cm \parfillskip-\rightskip
- \pagebreak[1]\smallskip}
-{\normalsize\rmfamily\bfseries\scshape
- \etocnumber. \etocname\DotsAndPage }
-{\parfillskip 0pt plus 1fil\relax }
-
-\etocsetstyle {subsection}
-{\leftskip1cm\rightskip .75cm \parfillskip 0pt plus 1fil\relax
- \nobreak\smallskip}
-{}
-{\footnotesize\sffamily\mdseries\itshape
- \etocname{} (\etocnumber, p. \etocpage). }
-{\par\medskip}
-
-\etocsettagdepth {preamble} {none}
-\etocsettagdepth {overview} {none}
-\etocsettagdepth {arbitrarily}{none}
-\etocsettagdepth {surprising} {none}
-\etocsettagdepth {linestyles} {subsection}
-\etocsettagdepth {globalcmds} {subsection}
-\etocsettagdepth {custom} {none}
-\etocsettagdepth {tips} {none}
-\etocsettagdepth {code} {none}
-
-\etocsettocstyle {\centering\LARGE\textsc{\contentsname}\par\nobreak\medskip}{}
-\etocsetnexttocdepth {subsection}
-\tableofcontents
-\endgroup
-
-Der Code:
-\begin{verbatim}
-\begingroup
-\newcommand*{\DotsAndPage}
-{\nobreak\leaders\hbox{\bfseries\normalsize\hbox to .75ex {\hss.\hss}}%
- \hfill\nobreak
- \makebox[\rightskip][r]{\bfseries\normalsize\etocpage}\par}
-
-\etocsetstyle {part}
-{\parindent 0pt
- \nobreak
- \etocskipfirstprefix}
-{\pagebreak[3]\bigskip}
-{\large\rmfamily\bfseries\scshape\centering
- \etocifnumbered{Part \etocnumber{} -- }{}\etocname\par}
-{}
-
-\etocsetstyle {section}
-{\leftskip 0pt \rightskip .75cm \parfillskip-\rightskip
- \nobreak\medskip
- \etocskipfirstprefix}
-{\leftskip 0pt \rightskip .75cm \parfillskip-\rightskip
- \pagebreak[1]\smallskip}
-{\normalsize\rmfamily\bfseries\scshape
- \etocnumber. \etocname\DotsAndPage }
-{\parfillskip 0pt plus 1fil\relax }
-
-\etocsetstyle {subsection}
-{\leftskip1cm\rightskip .75cm \parfillskip 0pt plus 1fil\relax
- \nobreak\smallskip}
-{}
-{\footnotesize\sffamily\mdseries\itshape
- \etocname{} (\etocnumber, p. \etocpage). }
-{\par\medskip}
-
-\etocsettagdepth {preamble} {none}
-\etocsettagdepth {overview} {none}
-\etocsettagdepth {arbitrarily}{none}
-\etocsettagdepth {surprising} {none}
-\etocsettagdepth {linestyles} {subsection}
-\etocsettagdepth {globalcmds} {subsection}
-\etocsettagdepth {custom} {none}
-\etocsettagdepth {tips} {none}
-\etocsettagdepth {code} {none}
-
-\etocsettocstyle {\centering\LARGE\textsc{\contentsname}\par\nobreak\medskip}{}
-\etocsetnexttocdepth {subsection}
-\tableofcontents
-\endgroup
-\end{verbatim}
-
-\section{Verlinkte Liste der Hauptbefehle}
-% 16 octobre
-
-\begingroup\raggedcolumns
-\advance\linewidth18pt
-\begin{multicols}{3}\parindent0pt\relax
- \csb{etocaftercontentshook}\par
- \csb{etocaftertitlehook}\par
- \csb{etocaftertochook}\par
- \csb{etocbeforetitlehook}\par
- \csb{etocdefaultlines}\par
- \csb{etocdepthtag.toc}\par
- \csb{etocdisplay}\par
- \csb{etocframedstyle}\par
- \csb{etocframed}\par
- \csb{etociffirst}\par
- \csb{etocifnumbered}\par
- \csb{etocignoredepthtags}\par
- \csb{etocignoretoctocdepth}\par
- \csb{etocinline}\par
- \csb{etoclink}\par
- \csb{etoclocalframed}\par
- \csb{etoclocalmulticol}\par
- \csb{etoclocalruled}\par
- \csb{etocmulticolstyle}\par
- \csb{etocmulticol}\par
- \csb{etocname}\par
- \csb{etocnumber}\par
- \csb{etocobeydepthtags}\par
- \csb{etocobeytoctocdepth}\par
- \csb{etocpage}\par
- \csb{etocruledstyle}\par
- \csb{etocruled}\par
- \csb{etocsetlevel}\par
- \csb{etocsetnexttocdepth}\par
- \csb{etocsetstyle}\par
- \csb{etocsettagdepth}\par
- \csb{etocsettocdepth.toc}\par
- \csb{etocsettocdepth}\par
- \csb{etocsettocstyle}\par
- \csb{etocskipfirstprefix}\par
- \csb{etocstandarddisplaystyle}\par
- \csb{etocstandardlines}\par
- \csb{etocthelinkedname}\par
- \csb{etocthelinkednumber}\par
- \csb{etocthelinkedpage}\par
- \csb{etocthelink}\par
- \csb{etocthename}\par
- \csb{etocthenumber}\par
- \csb{etocthepage}\par
- \csb{etoctoccontentsline}\par
- \csb{etoctoclines}\par
-%\vspace{5\baselineskip}\hrule height 0pt
-\end{multicols}
-\endgroup
-
-
-\clearpage
-% 15 octobre, je teste les tags
-\etocdepthtag.toc {arbitrarily}
-
-\part{Beliebig viele TOCs und lokale Versionen davon}
-% 13 octobre, ceci était une section avant
-
-\thispartstats
-
-\etocsettocstyle{}{}
-\etocstandardlines
-\localtableofcontents
-
-\section{Beschriften und anderswo wieder benutzen}
-
-\etoc erlaubt beliebig viele \csa{tableofcontents}-Befehle in
-ihrem Dokument. Die Zeilen- und Inhaltsangabenstile können
-natürlich dazwischen geändert werden. Außerdem setzt
-\csa{localtableofcontents} lokale Inhaltsangaben: \emph{z.\,B.} alle
-Abschnitte und Unterabschnitte innerhalb eines bestimmten
-Kapitels oder alle Unterabschnitte und tiefer innerhalb eines gegebenen
-Unterabschnitt usw.
-
-\etoc erlaubt das Labeln von Inhaltsangaben, beispielsweise mit
-\csa{label\{toc:A\}}, und wird es woanders
-\csa{tableofcontents}\csa{ref\{toc:A\}}, wenn gewollt, wieder anzeigen. Das
-eigentliche Layout (inklusive Titel) wird lokal bestimmt. Die Zeilen- und
-Inhaltsangabenstile (inklusive Titel) sind die aktuellen und der Wert von
-|tocdepth| leistet Folge. Hier ein Beispiel: Die Inhaltsangabe von
-\autoref{part:custom} ist innerhalb eines \hyperref[toc:d]{float}, der auf
-dieser Seite erscheint: \vpageref{toc:d}.
-\begin{figure}[ht!]
- \centering
- \begingroup
- \etocstandardlines
- \renewcommand{\etocbkgcolorcmd}{\color{green!5}}
- \renewcommand{\etocbelowtocskip}{0pt\relax}
- \fboxsep1ex
- \etocframedstyle [1]{\fbox{\makebox[.5\linewidth]{\etocfontminusone
- \hyperref[toc:c]{Ich bin von weit her}}}}
- \tableofcontents \label{toc:d} \ref{toc:c}
- \endgroup
-\end{figure}
-
-Wir benutzen dies:
-\begin{verbatim}
-\begin{figure}[ht!]
- \centering
- \begingroup
- \etocstandardlines
- \renewcommand{\etocbkgcolorcmd}{\color{green!5}}
- \renewcommand{\etocbelowtocskip}{0pt\relax}
- \fboxsep1ex
- \etocframedstyle [1]{\fbox{\makebox[.5\linewidth]{\etocfontminusone
- \hyperref[toc:c]{I am from far away}}}}
- \tableofcontents \label{toc:d} \ref{toc:c}
- \endgroup
-\end{figure}
-\end{verbatim}
-Wichtig: Man sollte \toc|\ref{toc:d}| nicht woanders benutzen. Um wieder zu
-Klonen, muss man eine Refernz zum Original-Label benutzen: \toc|\ref{toc:c}|.
-
-\section{Eine mächtige Funktionsweise von \etoc: Die Wieder\-zuweisung von
-Levels mit von \csbhyp{etocsetlevel}}
-
-Die intrinsischen Level, die durch \etoc manipuliert wurden, sind numerisch: von
-|-2| (welches |book| aus der |memoir|-Klasse entspricht) bis hinab zu |5|
-(|subparagraph|). Jedoch kann die Zuweisung eines numerischen Level zu einem
-gegebenen Namen zu jeder Zeit mit de Befehl
-\csb{etocsetlevel}\marg{level\_name}\marg{number} abgeändert werden. Daraus und
-aus der Benutzung des \LaTeX -|tocdepth|-Zählers resultieren mächtige
-Anwendungszwecke: \meta{level\_name} muss sich nicht mit dem eigentlichen
-Unterteilungsbefehls des Dokuments überschneiden. Außerdem kann \etoc genutzt
-werden, um beliebige "`Listen von Dingen"' ohne weitere Hilfsdateien, außer der
-|.toc|-Datei, zu erstellen. Dieses wird in \autoref{part:surprising} weiter
-erklärt.
-
-\begin{framed}
- Es wird oft gesagt, dass Unterteilungslevel von |\part| in den
- Standardklassen, die keinen |\chapter|-Befehl haben, gleich |0| sind, und in
- denen mit |\chapter|-Befehl gleich |-1| ist. Das ist auch \emph{richtig}, wenn
- man die \emph{automatische Nummerierung}, gesteuert durch den Wert des
- |secnumdepth|-Zählers, betrachtet. Aber es ist \emph{falsch}, wenn man den
- Effekt des |tocdepth|-Zählers sieht. Setzt man |tocdepth| in der |article|
- -Klasse direkt vor |\tableofcontents| auf |-1|, verhindert das \emph{nicht},
- dass Abschnitte in der Inhaltsangabe aufzutauchen. Man muss es dafür auf |-2|
- stellen, ganz egal ob in der |article|- oder der |book|-Klasse.
-
- Die kanonischen Level, grundsätzlich bekannt aus \etoc, sind
- von Relevanz für den \textbf{|tocdepth|}-Zähler in den Standardklassen
- und werden in der folgenden Tabelle rekapituliert:
-
- \centeredline{
- \fbox{\begin{tabular}{rc}
- (|memoir| class) book&-2\\ part&-1\\ chapter&0 \\
- section&1\\ subsection&2 \\
- subsubsection&3 \\ paragraph&4 \\ subparagraph& 5
- \end{tabular}}}
-
-\smallskip Mit \etoc kann der Nutzer innerhalb einem gegebenen Unterabschnitt
-einfach lokale Inhaltsangaben ausgeben. Darin werden, wenn gewollt,
-Unterabschnitte in dem Stil von Abschnitten, Paragraphen in dem Stil von
-Unterabschnitten und Unterparagraphen im Stil von Unter-Unterabschnitten
-gedruckt. Demnach kann man entscheiden alles auf das Level |6| zu setzen (wird
-von \etoc nie angezeigt), außer z.\,B. Paragraphen, die auf Level |1| befördert
-werden. So erstellt man eine schöne Inhaltsangabe aller Paragraphen eines
-Dokuments. (|tocdepth| mindestens |1|)\footnotemark
-\end{framed}
-
-\footnotetext{Normalerweise sollte man diese Inhaltsangabe der Paragraphen
-nicht im Kompabtibilitätsmodus ausgeben. Der würde darauf bestehen, einen
-gigantischen Abstand nach rechts einzufügen.}
-
-\section{Die \csbhyp{etoc\-set\-toc\-depth}- und
- \csbhyp{etoc\-set\-next\-toc\-depth}-Befehle}
-\label{etocsettocdepth}
-\label{etocsetnexttocdepth}
-
-Der |tocdepth|-Zähler hat keinen Einfluss darauf, was in die |.toc|-Datei
-geschrieben wird; dessen Einfluss ist ausschließlich auf das Setzen der
-Inhaltsangabe gerichtet. In der Standardklasse ist nur ein |\tableofcontents|
-möglich, wobei mit \etoc beliebig viele erlaubt sind. Dadurch könnte man
-|tocdepth| immer und immer wieder auf einen passenden Wert ändern (der
-entscheidet, wie tief die Abschnitte angezeigt werden sollen) bis die
-Inhaltsangabe gesetzt werden muss.
-
-\etoc bietet \csb {etocsettocdepth}\marg{level} an, wessen verpflichtendes
-Argument entweder (von |-3| bis |5|) oder einen Unterteilungstyp wie
-|subsection| oder |subsubsection| oder alle anderen, die davor in \etoc mit
-\csb{etocsetlevel} (die Schlüsselworte |all| und |none| erkannt werden,
-allerdings nicht in Zusammenhang mit der Dokumentenunterteilung) deklariert
-wurden. Das tut das passende |\setcounter{tocdepth}{numeric_level}|.
-
-Wie in dem nächsten Unterabschnitt erklärt wird, wird |tocdepth| von |hyperref|
-benutzt. Man muss die folgenden Schritte befolgen, um den Einfluss von
-|hyperref|`s Änderungen auf die Lesezeichen zu verhindern. \etoc hat \csb
-{etocsetnexttocdepth}\marg{level}. Dessen Einfluss endet direkt nach der
-nächsten Inhaltsangabe. Daraus folgt, dass
-\texttt{\textbackslash\foreignlanguage{english}{invisibletableofcontents}}
-essenziell für |\etocsetnexttocdepth{none}\tableofcontents| ist.
-
-Der einfachste Weg ist also, eine einfache Instanz des
-\csb{etocsettocdepth}-Befehl nach |\begin{document}| und vor dem ersten
- |\tableofcontents| mit dem tiefsten Level als Argument zu setzen. -- Dieses
- dann lokal zu benutzen, wo es gebraucht wird, anhand von
- \csb{etocsetnexttocdepth} vor |\tableofcontents| oder |\localtableofcontents|.
-
-\subsection{Die hyperref-Option \emph{bookmarksdepth}}
-\label{ssec:bookmarksdepth}
-
-Wenn man den Zähler |tocdepth| verändert, um \toc oder \localtoc
-mehrfach zu benutzen, sollte man gewahr sein, dass das Paket
-|hyperref| standardmäßig den Wert des \emph{aktuellen} Wertes
-der |tocdepth|-Zählers berücksichtigt, um zu entscheiden, ob die |pdf|-Datei
-Lesezeichen, korrespondierend mit den Unterteilungsbefehlen, die in der
-Quelldatei vorgefunden wurde, anzeigt. Dadurch muss man typischer Weise
-den |tocdepth|-Zähler auf seinen vorigen Wert zurücksetzen, nachdem man
-ihn temporär für eine gegebene Inhaltsangabe modifiziert hat.
-
-Alternativ gibt es die \emph{bookmarksdepth=n}-Option des |hyperref|-Pakets.
-Dabei ist \emph{n} die gewünschte maximale Lesezeichen-Tiefe. Diese kann
-numerisch sein oder der Name eines Levels, das |hyperref| bekannt ist.
-
-Wir sind in dieser Dokumentation schon an |bookmarksdepth=3| vorbeigekommen. Es
-war eine Option von |hyperref|. Auch wenn |tocdepth| nach dem Ausgeben einer
-Inhaltsangabe aus Nachlässigkeit auf |1| stehen gelassen wurde, so wurden der
-Lesezeichenbaum der |pdf|-Datei nicht verändert. Da \csb{etocsetnexttocdepth}
-jetzt zu dem Paket hinzugefügt wurde, ist keine Verwendung mehr für
-|bookmarksdepth=3|.
-
-\section{Der Befehl \csbhyp{etoc\-set\-toc\-dep\-th.toc}}
-\label{etocsettocdepth.toc}
-
-Dieser Befehl \csb{etocsettocdepth.toc} implementiert einige Funktionalitäten
-von Paket |tocvsec2|\footnote{\url{http://ctan.org/pkg/tocvsec2}. Ich danke D.B.
- meine Aufmerksamkeit auf die Inkompatibilität dieses Pakets mit \etoc
- gerichtet zu haben.}. Dieses Paket war inkompatibel mit \etoc. Es kann nun
-noch für seine mit |secnumdepth| in Verbindung stehenden Befehle genutzt werden,
-alle mit |toc| in Verbindung stehenden Aktivitäten werden jedoch durch \etoc
-abgebrochen.
-
-Das Handeln von \csb{etocsettocdepth.toc} ist grundlegend verschieden zu
-\csb{etocsettocdepth}. Anstatt den |tocdepth|-Zähler direkt zu verändern,
-fügt es der |.toc|-Datei eine Linie an, die, wenn ausgeführt, in einer
-Inhaltsangabe diese Veränderung ausführen wird.
-
-Der Befehl \csb{etocsettocdepth.toc} akzeptiert, wie
-\csb{etocsettocdepth}, Namen und numerische Argumente.
-In dem Fall eines Namen als Argument ist der tatsächliche numerische
-Wert noch nicht festgelegt, wenn |.toc|-Datei erstellt wird. Es wird
-der Wert sein, der aktuell für das benannte Level der Inhaltsangabe
-(ohne |\etocignoretoctocdepth| gemacht zu haben) bei
-jeder Erstellung einer Inhaltsangabe spezifiziert wird.
-
-Der |tocdepth|-Zähler wird niemals auf einen Wert gesetzt, der feiner
-als der ist, mit dem er zu Beginn der Inhaltsangabe initialisiert wurde.
-Also ist das Hinzufügen von \csb{etocsettocdepth.toc} im Dokument ein Weg
-die Tiefe einer lokalen Inhaltsangabe einzugrenzen. Zum Beispiel,
-um die Einfügung von Unter-unter-Abschnitten oder eines gegebenen
-Kapitels zu unterbinden.
-
-
-Dieses
-{\fbox{wird in allen Inhaltsangaben ausgeführt.}}
-
-\subsection{Die Befehle \csbhyp{etocobeytoctocdepth} und \csbhyp{etocignoretoctocdepth}}
-\label{etocobeytoctocdepth}
-\label{etocignoretoctocdepth}
-
-
-Also wird \csb{etocignoretoctocdepth} gesetzt, um den
-\csa{etocsettocdepth.toc}-Mecha\-nismus abzubrechen, wenn
-benötigt; und \csb{etocobeytoctocdepth} wird es
-reaktivieren. Das Paket führt \csb{etocobeytoctocdepth} zu Beginn aus.
-
-
-\section{Die Befehle \csbhyp{etoc\-depth\-tag.toc} und \csbhyp{etocsettagdepth}}
-\label{etocdepthtag.toc}
-\label{etocsettagdepth}
-
-Wie oben erwähnt, wenn das Argument für \csb{etocsettocdepth.toc} kein
-numerisches sondern ein Namen-Level ist, wird durch die tatsächliche Nummer bei
-der Erstellung der Inhaltsangabe entschieden. Dadurch und anhand der
-\emph{Schiebe-Mechanismen von \etoc} kann man einen sehr flexiblen Aufbau
-erreichen: Man erklärt mit \csb{etocsetlevel} zuerst ein paar Platzhaltelevel,
-z.\,B. |partIII|, und weist ihm das unsichtbare Level |6| zu. Dann, vor dem
-dritten |\part| Befehl, fügt man \csb{etocsettocdepth.toc}|{partIII}| ein. An
-dem Ort, an dem der Effekt enden soll, setzt man
-\csb{etocsettocdepth.toc}|{all}| ein. Es ist nun möglich, jedes Mal, wenn man
-eine Inhaltsangabe setzen will, das feinste Level der Einträge aus dem dritten
-Teil zu spezifizieren. Man muss z.\,B. nur \csa{etocsetlevel}|{partIII}{1}|
-schreiben. Es wird die Abschnitte limitieren (sofern |tocdepth| mindestens auf
-diesem Level war, wenn die Inhaltsangabe ausgegeben wurde).
-
-Die Methode hat ein paar Beschränkungen:
-\begin{enumerate*}[label={(\roman*)}]
- \item Das zweite Argument von \csb{etocsetlevel} muss numerisch sein;
- \item es kann nicht auf |-3| gesetzt werden (was nötig wäre, wenn man ganze
- Bücher aus der Inhaltsangabe streichen wöllte in den Klasse |memoir|);
- \item es ist ein bisschen getrickst, seit |partIII| kein richtiger unterteilender
- Abschnitt ist sondern nur ein \emph{tag}.
-\end{enumerate*}
-
-Version |1.07h| enthält den Befehl \csb{etocdepthtag.toc}, der
-es einfacher macht, diese variable lokale Kontrolle des |tocdepth| zu erreichen,
-wenn die Inhaltsangabe erstellt wird.
-
-
-Es wird als \csb{etocdepthtag.toc}\marg{tag\_name} genutzt, wo der
-\meta{tag\_name} irgendetwas ist, das wird den Tag in die |.toc|-Datei setzen.
-Wenn die Inhaltsangabe erstellt wird, initiiert das eine Reihe von Befehlen
-\csb{etocsettagdepth}\marg{tag\_name}\marg{level}, wo das \meta{level} entweder
-numerisch (von |-3| bis |5|) oder ein Name einer unterteilenden Einheit, die
-\etoc bekannt ist, oder |none| oder |all|. Der Effekt von den Tags innerhalb der
-|.toc|-Datei ist es, den |tocdepth|-Zählers auf den gewünschten Wert zu setzen
-(das kann wie schon erwähnt, nicht feiner sein als der initiale Wert des
-|tocdepth|-Zählers).
-
-Die hinzugefügte Flexibilität wirkt sich insofern aus, dass \csb{etocsetlevel}
-nicht mehr mit dieser getricksten Methode, bei der man Level-Tiefen und |none|
-und |all| benutzt hat.
-
-Wie immer, wenn die Tag-Tiefen gesetzt wurden, bleiben sie wirkend, bis sie
-wieder definiert werden oder ihr Wirkungsgebiet beendet wird, indem die
-umschließende Gruppe geschlossen wird. Für ein Beispiel, siehe hier:
-\autoref{ssec:tocwithdepthtags}.
-
-
-\subsection{Die Befehle \csbhyp{etocobeydepthtags} und \csbhyp{etocignoredepthtags}}
-\label{etocobeydepthtags}
-\label{etocignoredepthtags}
-
-
-Nach \csb{etocignoredepthtags} werden die |.toc|-Tiefentags ignoriert
-(nach \csb{etocdepthtag.toc} funktionieren sie jedoch noch). Das Paket
-führt zu Beginn \csb{etocobeydepthtags} aus. Dieses befielt \etoc auf die
-gefundenen Tags in der |.toc|-Datei zu reagieren.
-
-\section{Befehle zur \texorpdfstring{\texttt{.toc}}{.toc}-Datei hinzufügen}
-\label{sec:addingtotoc}
-
-Wir beschrieben oben die Befehle \csb{etocsettocdepth.toc} und
-\csb{etocdepthtag.toc}, welche beide Befehle in die |.toc|-Datei einfügen. Ein
-noch allgemeinerer Weg, um "`action tags"' in die |.toc|-Datei einzufügen, wäre
-vorstellbar, allerdings würde auch nur indirekt
-|\addtocontents{toc}{\something}| benutzt werden.
-
-Man sollte vorsichtig sein, wenn man auf diesem Weg Dinge zur |.toc|-Datei
-hinzufügt. Zum Beispiel das Einfügen von
-\csa{addtocontents}|{toc}{\string\clearpage}| direkt vor einem \csa{part} behebt
-den Fehler, dass Teileinträge in Inhaltsangaben vom Rest getrennt am Ende der
-Seite auftauchen, kann aber auch Probleme mit mehreren Inhaltsangaben haben:
-\csa{clearpage} wird jedes Mal ausgeführt, wenn \etoc über ein \toc oder
-\localtoc stolpert. Die schlauere Methode wäre es:
-{\csa{addtocontents}|{toc}{\string\myclearpage}|,} den |\let\myclearpage\relax|,
-man hätte den Befehl |\let\myclearpage\relax| zu Beginn des Dokuments und wenn
-benötigt, benutzt man etwas wie:
-\begin{verbatim}
-\let\myclearpage\clearpage
-\tableofcontents
-\let\myclearpage\relax
-\end{verbatim}
-Die |memoir|-Klasse besitzt den Befehl \csa{settocdepth}, der einen
-\csa{changetoc\-depth}-Befehl in die |.toc|-Datei setzt. Dieses
-beeinflusst die Schriftsetzung von \etoc bei \emph{allen} Inhaltsangaben mit
-möglichen unvorhersehbaren Ergebnissen: Stellen Sie sich vor, irgendwo im Dokument
-stünde \csa{settocdepth}|{chapter}|, um die Abschnitte von Unterabschnitten
-nicht in der Hauptinhaltsangabe aufzulisten. In diesem Fall würde eine
-lokale Inhaltsangabe in einem dieser Kapitel einen Titel ohne jeden Eintrag ausgeben.
-
-Da die |memoir|-Klasse von Haus aus schon mehrfache \toc erlaubt, tritt dieser
-Fehler schon viel früher, und unabhängig von \etoc, auf. Siehe Seite 170 der
-|memoir|-Anleitung.
-
-Für diesen Spezialfall gibt es folgende Befehle: \csb{etocsettocdepth.toc},
-\csb{etocignoretoctocdepth}, \csb{etocobeytoctocdepth} oder deren
-Varianten \csb{etocdepthtag.toc} und \csb{etocsettagdepth}.
-
-Nebenbei, jeder |\setcounter{tocdepth}{n}|-Befehl fügt direkt in die
-|.toc|-Datei hinzu. Es scheint so, dass seine Wirkung ist (seit der Version
-|1.07g|), beendet den Abschluss jedes Inhaltsverzeichnis zu beenden, automatisch
-wird ein |\setcounter{tocdepth}{previous_value}| genommen, mit dem Wert, aktiv
-ein Inhaltsverzeichnis zu nehmen.
-
-\subsection{Die hyperref-Option \emph{hidelinks}}\label{ssec:hidelinks}
-
-Die farbigen Links (und auch die Kastenlinks) sind einwenig ärgerlich, wenn in
-Inhaltsverzeichnissen verwendet, insbesonders, wenn das Dokument \etoc verwendet
-und viele von ihnen beinhaltet! Man kann sich wünschen, farbige Links
-\emph{ausschließlich} für Inhaltsverzeichnisse! In der Tat, warum sollten in
-TOCs diese Dinge gerahmt oder farbig sein müssen, wenn der Benutzer
-\emph{bereits erwartet, dass dort Links sind}?
-
-Ich nehme den folgenden Trick: Entweder in der Präambel zu nehmen
-|\AtBeginDocument| oder danach |\begin{document}|, ich habe den Befehl \centeredline{|\addtocontents{toc}{\protect\hypersetup{hidelinks}}|}
-
- \begin{framed}
- Alle TOCs, die von \etoc gesetzt sind, haben ihre Inhalte in eine
- Gruppierung getan, (wie in einer Umgebung eingeschlossen). So wird der
- Befehl \csa{hypersetup}|{hidelinks}| ausgeführt von \emph{jedem} TOC, aber
- sein Effekt wird limitiert zu dem TOC.
- \end{framed}
-
-Experimentell habe ich herausgefunden, dass die Option |hidelinks| oftmals mit
-|\hypersetup| eingestellt werden kann (Dies ist nicht bei allen
-|hyperref|-Optionen der Fall).
-
-
-
-\section{Zwei Beispiele}
-
-\subsection{Eine wunderschöne Beispielthese}
-
-Hier ist noch ein relativ einfaches Beispiel für die Verwendung der
-Paket-Funktionsweisen. Lassen Sie uns einige Linienstile einrichten. Wir wählen
-einen Stil für Abschnitte und Unterabschnitte, welche für die Abschnitte und
-Unterabschnitte in einem durchschnittlichen Memoirenumfang geeignet wären. Die
-Linienstilspezifikationen haben eine gewisse Redundanz für die Klarheit, und sie
-interessieren sich nicht dafür, was bei möglichen Seitenumbrüchen zu tun ist.
-Auch sind sie nicht besorgt über die potentielle mehrspaltige Nutzung.
-
-\begin{verbatim}
-\begingroup % wir starten, um eine Gruppe zu behalten
-\newlength{\tocleftmargin} \setlength{\tocleftmargin}{5cm}
-\newlength{\tocrightmargin} \setlength{\tocrightmargin}{1cm}
-
-\etocsetstyle{section} % wird vorgegeben, ein Kapitel zu sein
-{\addvspace{1ex}\parfillskip0pt
- \leftskip\tocleftmargin % (bereits im Titel getan)
- \rightskip\the\tocrightmargin plus 1fil
- \parindent0pt\color{cyan}} % (bereits getan)
-{\bfseries\LARGE\upshape\addvspace{1ex}\leavevmode}
-{\llap{Chapter\hspace{.5em}{\etocnumber}\hspace{.75cm}}\etocname
- \hfill\makebox[-\tocrightmargin][l]{\makebox[0pt]{\etocpage}}\par}
-{}
-
-\etocsetstyle{subsection} % wird vorgegeben, ein Abschnitt zu sein
-{}
-{\mdseries\large\addvspace{.5ex}\leavevmode}
-{\llap{\etocnumber\hspace{.75cm}}\textit{\etocname}%
- \hfill\makebox[-\tocrightmargin][l]{\makebox[0pt]{\etocpage}}\par}
-{}
-
-\def\tmptitle{My Beautiful Thesis}
-\etocsettocstyle{\color{cyan}\parindent0pt \leftskip\tocleftmargin
- \leavevmode\leaders\hrule height 1pt\hfill\
- \huge\textit{\tmptitle}\par}{\bigskip}
-
-\tableofcontents \ref{toc:overview}
-\endgroup
-\end{verbatim}
-
-\begingroup
-\newlength{\tocleftmargin}
-\setlength{\tocleftmargin}{5cm}
-\newlength{\tocrightmargin}
-\setlength{\tocrightmargin}{1cm}
-
-\etocsetstyle{section}
-{\addvspace{1ex}\parfillskip0pt
- \leftskip\tocleftmargin
- \rightskip\the\tocrightmargin plus 1fil
- \parindent0pt\color{cyan}}
-{\bfseries\LARGE\upshape\addvspace{1ex}\leavevmode}
-{\llap{Kapitel\hspace{.5em}{\etocnumber}\hspace{.75cm}}\etocname
- \hfill\makebox[-\tocrightmargin][l]{\makebox[0pt]{\etocpage}}\par}
-{}
-
-\etocsetstyle{subsection}
-{}
-{\mdseries\large\addvspace{.5ex}\leavevmode}
-{\llap{\etocnumber\hspace{.75cm}}\textit{\etocname}%
- \hfill\makebox[-\tocrightmargin][l]{\makebox[0pt]{\etocpage}}\par}
-{}
-
-\def\tmptitle{Meine wunderschöne These}
-
-\etocsettocstyle{\color{cyan}\parindent0pt\leftskip\tocleftmargin
- \leavevmode\leaders\hrule height 1pt\hfill\
- \huge\textit{\tmptitle}\par}{\bigskip}
-
-\tableofcontents \ref{toc:overview}
-% And again, for the fun of it:
-% \def\tmptitle{My Very Beautiful Thesis}
-% \tableofcontents \ref{toc:c}
-\endgroup
-
-
-\subsection{Ein TOC mit einer Hintergrundfarbe}\label{ssec:again}
-
-Lassen Sie uns nun einige anspruchsvollere Linienstile versuchen. Das Display
-wird den Paket-Befehl \csa{etocframedstyle} verwenden, damit das erzeugte
-Inhaltsverzeichnis auf eine einzige Seite passt. Wir wickeln es in eine
-\hyperref[toc:floating]{Figur-Umgebung}, damit es auf der aktuellen Seite
-angezeigt wird. \vpageref{toc:floating}.
-
-
-\begin{figure}[htbp!]\centering
-\colorlet{subsecnum}{black}
-\colorlet{secbackground}{green!30}
-\colorlet{tocbackground}{red!20!green!20}
-
-\renewcommand{\etocbkgcolorcmd}{\color{tocbackground}}
-\renewcommand{\etocleftrulecolorcmd}{\color{tocbackground}}
-\renewcommand{\etocrightrulecolorcmd}{\color{tocbackground}}
-\renewcommand{\etocbottomrulecolorcmd}{\color{tocbackground}}
-\renewcommand{\etoctoprulecolorcmd}{\color{tocbackground}}
-
-\renewcommand{\etocleftrule}{\vrule width 3cm}
-\renewcommand{\etocrightrule}{\vrule width 1cm}
-\renewcommand{\etocbottomrule}{\hrule height 12pt}
-\renewcommand{\etoctoprule}{\hrule height 12pt}
-
-\renewcommand{\etocinnertopsep}{0pt}
-\renewcommand{\etocinnerbottomsep}{0pt}
-\renewcommand{\etocinnerleftsep}{0pt}
-\renewcommand{\etocinnerrightsep}{0pt}
-
-\newcommand\shiftedwhiterule[2]{%
- \hbox to \linewidth{\color{white}%
- \hskip#1\leaders\vrule height1pt\hfil}\nointerlineskip
-\vskip#2}
-
-\etocsetstyle{subsubsection}{\etocskipfirstprefix}
-{\shiftedwhiterule{\leftskip}{6pt}}
-{\sffamily\footnotesize
-\leftskip2.3cm\hangindent1cm\rightskip.5cm\noindent
-\hbox to 1cm{\color{subsecnum}\etocnumber\hss}%
-\color{black}\etocname\leaders\hbox to .2cm{\hss.}\hfill
-\rlap{\hbox to .5cm{\hss\etocpage\hskip.1cm}}\par
-\nointerlineskip\vskip3pt}
-{}
-
-\etocsetstyle{subsection}{\etocskipfirstprefix}
-{\shiftedwhiterule{1.5cm}{6pt}}
-{\sffamily\small
-\leftskip1.5cm\hangindent.8cm\rightskip.5cm\noindent
-\hbox to .75cm{\color{subsecnum}\etocnumber\hss}%
-\color{black}\etocname\leaders\hbox to .2cm{\hss.}\hfill
-\rlap{\hbox to .5cm{\hss\etocpage\hskip.1cm}}\par
-\nointerlineskip\vskip3pt}
-{}
-
-\newcommand{\coloredstuff}[2]{%
- \leftskip0pt\rightskip0pt\parskip0pt
- \fboxsep0pt % \colorbox uses \fboxsep also when no frame!
- \noindent\colorbox{secbackground}
- {\parbox{\linewidth}{%
- \vskip5pt
- {\noindent\color{#1}#2\par}\nointerlineskip
- \vskip3pt}}%
- \par\nointerlineskip}
-
-% v1.07l on the occasion of traduction into German documentation:
- % APRIL 26, 2014 Improvement in the section style for better placement of
- % page number when the section name is more than one line long. Use of
- % \makebox rather than \hbox, to be more LaTeX like.
-\etocsetstyle{section}
-{\coloredstuff{blue}
- {\hfil \bfseries\large Inhalt von Teil Eins\hfil}}
-{\vskip3pt\sffamily\small}
-{\coloredstuff{blue}
- {\leftskip1.5cm\rightskip.5cm\parfillskip-\rightskip
- \makebox[0pt][r]{\makebox[.5cm][l]{\etocnumber}}%
- \etocname\hfill{\makebox[.5cm][r]{\etocpage\hspace{.1cm}}}}%
- \vskip6pt }
-{}
-
-
-% attention car \ref{toc:floating} fera référence au compteur de
-% toutes les toc, pas visibletoc.
-
-\etocframedstyle[1]{}
-\tableofcontents \label{toc:floating} \ref{toc:overview}
-\vspace{-\baselineskip}
-\centeredline{|\tableofcontents \ref{toc:overview}|
-(\emph{cf.} \autoref{ssec:again} and \hyperref[toc:clone]{this other toc})}
-\end{figure}
-
-Das aktuelle Design ist nicht in \etoc vorgefertigt; sondern nutzt seine
-`eingerahmten' Stile mit einer Hintergrundfarbe. Die Rahmengrenzen wurden so
-gesetzt, dass die gleiche Farbe, wie die Hintergrundfarbe, für die gesamte Sache
-dienen soll. Dieses Design (mit anderen Farben) wird auch für
-\hyperref[toc:clone]{dieses andere Inhaltsverzeichnis} benutzt, und der Leser
-bezieht sich auf seine \hyperref[ssec:tocclone]{Unterabschnitte}, welche für die
-Kodierung vorgesehen sind.
-
-
-\clearpage
-\etocdepthtag.toc {surprising}
-\part{Überraschende Anwendungen von \etoc}
-\label{part:surprising}
-
-\thispartstats %% (pas de sous-section)
-
-% in dtx of release 1.07h there was here a \thisspecialstats, but it
-% originated from the period when this \part was only a \section. So its
-% effect was not the intended one, basically it had the same effect as this:
-\etocstandardlines
-\etocsettocstyle {}{}
-\localtableofcontents
-
-\section{Das TOC für TOCs}
-
-\begingroup % \endgroup just after the \tableofcontents command
-\etocinline
-\etocsetlevel{part}{1}
-\etocsetlevel{visibletoc}{0}
-\etocsetstyle{visibletoc}
- {\etocskipfirstprefix}
- {, }
- {{\color{niceone}\etocname}}
- {}
-\etocsettocstyle{}{}
-\etocsetnexttocdepth{visibletoc}
-
-Hier ist die nummerierte und verknüpfte Liste aller Tabellen von Inhalten, die
-in diesem Dokument dargestellt sind \footnote{Die Inhaltsverzeichnisse können
- "`Schwimmer"' setzen, um die Reihenfolge zu ändern: die Zahlen werden in der
- Reihenfolge der Inhaltsverzeichnisse in dem Dokument aufgeführt; aber die
- Nummerierung selbst ist von der Reihenfolge der Inhaltsverzeichnisse in der
- \emph{Quelle} dieses Dokumentes \ldots}
-\tableofcontents\endgroup. Und hier erhalten wir, was
-wir gerade geschrieben haben:\par\smallskip
-{\leftskip1cm\rightskip2cm
- \ttfamily\small\baselineskip11pt \noindent Hier ist die
- nummerierte und verknüpfte Liste aller Tabellen von Inhalten, die in
- diesem Dokument dargestellt sind:~\string\tableofcontents.\par}
-
-Die vorausgehenden Arbeiten waren wie folgt. Zuerst definierten wir einen Zähler
-|visibletoc|, dessen Berufung es ist, bei jedem angezeigten Inhaltsverzeichnis
-erhöht zu werden. \etoc hat einen eigenen Zähler, aber es zählen alle
-Inhaltsverzeichnisse, auch wenn diese nicht angezeigt werden, da die |tocdepth|
-Werte |-2| oder |-3| waren.
-
-Wir könnten manuell |\refstepcounter{visibletoc}| und |\label| an allen
-geeigneten Stellen im Dokument hinzufügen, und wir würden dann |\ref|- Befehle
-verwenden, aber dies stellt eine hohe manuelle Bearbeitung der Quelle dar.
-
-Es gibt eine viel bessere Möglichkeit: Es gibt einen Aufhänger
-\csb{etocaftertitlehook} und wir sagten, es erhöht sich der |visibletoc|-Zähler
-und wir schreiben eine Anlage zu der |.toc|-Datei, in analoger Weise zu dem
-Gliederungsbefehl, zum Beispiel |Kapitel|, |Abschnitt| oder |Unterabschnitt|.
-Wie \etoc seinen eigenen Zähler erhöht, noch bevor der Titel des
-Inhaltsverzeichnisses gesetzt wird, bietet diese (die meiste Zeit) einen
-besseren Link-Zielpunkt als jeder Zähler von \csa{etocaftertitlehook} (der Link
-wird nach dem Titel platziert). Anstatt mit |\refstepcounter{visibletoc}|,
-innerhalb von \csa{etocaftertitlehook}, formulieren wir
-|\stepcounter{visibletoc}|, dann folgt der Befehl
-\csb{etoctoccontentsline}|{visibletoc}{\thevisibletoc}|. Dieser \etoc-Befehl
-\csb{etoctoccontentsline}\marg{level\_name}\marg{name} hat die gleiche Wirkung
-wie: \centeredline{| ||\addcontentsline{toc}|\marg{level\_name}\marg{name}} aber
-sein Nutzen ist es \footnote{Mit \csa{addtocontents} anstatt
- \csa{addcontentsline}.}, die Reparatur der automatischen Erstellung von
-Lesezeichen zu verhindern mit \csa{addcontentsline} bei dem |hyperref|-Paket,
-wie die pdf-Lesezeichen machen sie nicht viel Sinn hier (und würde eine
-Beschwerde bezüglich von |hyperref| eruieren, denn das Lesezeichen-Niveau ist
-`unbekannt').\footnote{ Das Paket bietet eine Stern-Variante
- \staritb{etoctoccontentsline}, die zulässt, dass die Erstellung von
- Lesezeichen und das Haben eines dritten obligatorischen Arguments, welches das
- Lesezeichen-Niveau darstellt, funktioniert; abhängig vom Kontext kann die
- Hauptrolle und die Nicht-Stern-Variante profitabel durch \csa{phantomsection}
- sein.}
-
-Schließlich war in der Präambel des Dokuments |\etocsetlevel{visibletoc}{6}|.
-Das Niveau |6| (oder etwas mit einer höheren Zahl) wird ignoriert, auch wenn
-|tocdepth| zum Beispiel den Wert |10| hat; das ist unabhängig davon, ob \etoc
-die Dokumentenklasse als Standardlinien oder als eigene Linienstile nutzt oder
-die, die vom Benutzer mit \csa{etocsetstyle} Befehl definiert wurden. Es gibt
-also keinen Grund zur Sorge, dass etwas schief gehen könnte.
-
-Dann haben wir hier nur |\etocsetlevel{visibletoc}{0}| gesetzt. Und nur diese
-Art von Einträgen weisen wir vorübergehend eine |Teil|- und |Kapitel|-Ebene |1|
-zu (oder etwas höher als null) und setzen |tocdepth| auf den Wert |0|. Wir haben
-auch \csa{etocsetstyle\{visibletoc\}\{\string\etocskipfirstprefix\}\{,
- \}\{\string\etocname\}\{\}}, welche eine innere Anzeige mit dem Komma als
-Trennzeichen definiert. Wie \etoc Aspekte |\par| automatisch als Standard das
-Inhaltsverzeichnis setzt, verwendeten wir den Befehl \csb{etocinline} (auch als
-\cs{etocnopar} bekannt), welches die Reaktion ausmacht .
-
-Hier sind die Details der Implementierung:
-
-\begingroup
-\begin{verbatim}
- < in der Prämbel >
-\newcounter{visibletoc}
-\renewcommand{\etocaftertitlehook}
- {\stepcounter{visibletoc}\etoctoccontentsline{visibletoc}{\thevisibletoc}}
-\etocsetlevel{visibletoc}{6}
-\begin{document}
- < document body >
-\subsection{Surprising uses of etoc}
-\begingroup
- \etocinline
- \etocsetlevel{part}{1}
- % \etocsetlevel{chapter}{1} % (keine Kapitel in scrartcl Klasse)
- \etocsetlevel{visibletoc}{0}
- \etocsetstyle{visibletoc}
- {\etocskipfirstprefix}{, }{{\color{niceone}\etocname}}{}
- \etocsettocstyle{}{} % keine Titel, Regeln oder Rahmen festgelegt!
- \etocsetnexttocdepth{visibletoc} % zeigt nur die `visibletoc' Einträge an aus .toc
-
-Hier ist die nummerierte und verknüpfte Liste aller Tabellen von Inhalten,
-die in diesem Dokument angezeigt werden: \tableofcontents.
-\endgroup
-\end{verbatim}
-
-\endgroup
-
-Nach |\etocsetstyle{visibletoc}{..}{..}{..}{..}|, wird für alle zukünftigen
-Inhaltsverzeichnisse (nicht im
-Kompatibilitätsmodus) der definierte Stil für das Niveau
-|0| verwendet (was normalerweise der Pegel für ein Kapitel
-ist). Um diese Änderung auf die einfachste Art und Weise zu halten, muss man
-alles in eine Gruppe setzen.
-
-Der \autoref{subsec:interverting} gibt eine andere Verwendung
-von Verschachtelungsstufen an.
-
-\section{Willkürliche "`Listen von \ldots "', \csbhyp{etoctoccontentsline}}
-\label{etoctoccontentsline}
-
-Die Idee der Internabwehr ist leistungsfähig und ermöglicht
-\etoc-Anzeigelisten, um beliebige Dinge in dem Dokument enthalten zu lassen.
-Und all das mit noch nichts anderem als der
-|.toc| Datei!
-Beispiel: Stellen Sie sich ein Dokument mit Dutzenden von Übungen vor,
-vielleicht als |\newtheorem{exercise}{}[section]|.
-Lassen Sie uns erklären, wie man \etoc anweist, eine verlinkte Liste all dieser
-Übungen anzuzeigen. Dafür haben wir in der Präambel geschrieben:
-\begin{verbatim}
- \newtheorem{exerci}{}[section]
- % the exercice number will be recoverable via \etocname: v--here--v
- \newcommand*{\exercisetotoc}{\etoctoccontentsline{exercise}{\theexerci}}
- \newenvironment{exercise}{\begin{exerci}\exercisetotoc}{\end{exerci}}
- \etocsetlevel{exercise}{6}
-\end{verbatim}
-Auf diese Weise wird \csa{etocname} die Übungsnummer vergeben (aber
-\csa{etocnumber} wird leer sein). Hätten wir stattdessen
-\begin{verbatim}
- \newcommand*{\exercisetotoc}
- {\etoctoccontentsline{exercise}{\protect\numberline{\theexerci}}}
-\end{verbatim}
-%
-verwendet, wäre die Übungsnummer via \csa{etocnumber} verfügbar und
-\csa{etocname} wäre leer gewesen. Es spielt keine Rolle, welches der beiden
-Verfahren verwendet wird. Der \etoc Befehl \csa{etoctoccontentsline}|{..}{..}|
-wird als Ersatz für \csa{addcon\-tentsline}|{toc}{..}{..}| verwendet: Das ist
-die, die durch das Reparieren von |hyperref| zu \csa{addcontentsline} verwendet
-wird, um in ihrem Prozess die Erstellung von Lesezeichen zu vermeiden. Wenn man
-|hyperref| ermächtigt, Lesezeichen auf einer bestimmten Ebene \meta{n} zu
-erschaffen, kann einer (hier mit \meta{n}$=$|2|) die Stern-Variante
-\starit{etoctoccontentsline} benutzen, welche ein zusätzliches Argument hat:
-%
-\begin{verbatim}
-\newcommand{\exercisetotoc}{\etoctoccontentsline*{exercise}{\theexerci}{2}}
-\end{verbatim}
-
-Der Zähler |exerci| wird bereits durch das |exerci|-Theoremumfeld erhöht und
-sorgt für den richtigen Ort für den Link zusätzlich zum Paket
-|hyperref|. Der Befehl \csa{exercisetotoc} fügt für jede Übung eine Zeile in die
-|.toc|-Datei, entsprechend einer fiktiven Dokumenteinheit
-mit dem Namen `|Übung|' ein. Eine
-Vier-Säulen-Liste, einschließlich der Abschnitte, kann dann erreichen mit
-\begin{verbatim}
- \etocsetnexttocdepth{2} % Abschnitte sind auf Stufe 1 und werden anzeigen
-\begingroup
- \etocsetlevel{exercise}{2} % aber:
- \etocsetlevel{chapter}{3} % keine Kapitel
- \etocsetlevel{subsection}{3} % keine Unterabschnitte
- \etocsetlevel{part}{3} % keine Parts
- \etocsetstyle{exercise}{}{} % \etocname = exercise number
- {\noindent\etocname\strut\leaders\etoctoclineleaders\hfill\etocpage\par}
- {\pagebreak[2]\vskip\baselineskip}
- \etocsetstyle{section}{}{}
- {\noindent\strut{\bfseries\large\etocnumber\hskip.5em\etocname}\par
- \nopagebreak[3]}{}
- \etocruledstyle[4]{\Large\bfseries List of the exercises}
- \setlength{\columnseprule}{.4pt}
- \tableofcontents
-\endgroup
- \end{verbatim}
-
-
-\section{Ein TOC mit einem extravagantem Layout}
-
-Hier ist ein Inhaltsverzeichnis, wo die Abschnitte aus einem bestimmten Kapitel
-durch einen Zahlenbereich dargestellt werden sollen
-(wie 18--22 bei einem bestimmten Kapitel, 42--49 für ein anderes \ldots\
-natürlich in das Inhaltsverzeichnis automatisch eingefügt wurden).
-
-Dies ist kein Abbildungseinschluss, das Inhaltsverzeichnis wird von seiner
-ursprünglichen
-|tex|-Quelle in dieses Dokument nach dem Austausch des
-|Teils|, |Kapitels| oder |Abschnitts| mit |Dummy-Teil|, |Dummy-Kapitel| und
-|Dummy-Abschnitt| (und da ist auch eine Dummy-Seitenzahl) produziert. Wir
-kopierten die Linienstile, wie im Original verwendet, und
-das Inhaltsverzeichnis zeigt folgende Situation an:
-\begin{verbatim}
- \etocsetlevel{dummypart} {-1} \etocsetlevel{part} {2}
- \etocsetlevel{dummychapter}{0} \etocsetlevel{chapter}{2}
- \etocsetlevel{dummysection}{1} \etocsetlevel{section}{2}
- \etocsetnexttocdepth{dummysection}
-\end{verbatim}
-
-Jedes Kapitel zeigt die Zahl nur von dem ersten und dem letzten Abschnitt an.
-Siehe in der Quelldatei |etoc.dtx| für die Details nach, wie das gemacht wird.
-
-Eine andere Technik für diese Art der Dinge erläutert
- \autoref{ssec:statistics}.
-
-\begingroup
-
- \etocsetlevel{dummypart}{-1}
- \etocsetlevel{dummychapter}{0}
- \etocsetlevel{dummysection}{1}
- \etocsetlevel{part}{2}
- \etocsetlevel{chapter}{2}
- \etocsetlevel{section}{2}
-
- \newif\ifextraidone
- \newif\ifextraiidone
-
- \etocsetstyle{dummypart}
- {}
- {}
- {\begin{center}\Large\bfseries TEIL \etocnumber
- \ifextraiidone\\\etocname.\fi\end{center}
- \ifextraidone\else
- \noindent\hskip.7\linewidth
- \hbox to .2\linewidth
-% février (ou janvier?) 2013
-% je modifie ici en ajoutant un \hss, pour compenser la plus petite
-% taille de txrm. Ok.
- {\hss\small\textsc{\bfseries Kapitel.\hss Seite.}}\par\fi
- \extraidonetrue
- }
- {}
-
- \newcommand\mytocleaders{\hbox to .125\linewidth{...\hss}}
- \etocsetstyle{dummychapter}
- {}
- {\par\noindent\etocifnumbered
- {\makebox[.15\linewidth][r]{\bfseries\etocnumber.}}
- {\hspace*{.15\linewidth}}}
- {\hbox to .65\linewidth
- {\hspace{1em}\etocname\leaders\mytocleaders\hss}%
- \hskip-.1\linewidth
- \hbox to .2\linewidth{\hspace{1.5em}...\hss
- \etocifnumbered
- {\etocpage}
- {\ifextraiidone\else\etocpage\fi}}%
- \hskip-.2\linewidth
- }
- {}
-
- \newbox\forsectionnumbers
- \makeatletter
-% 21 février 2013: je rajoute \color@begingroup et \color@endgroup
- \etocsetstyle{dummysection}
- {\setbox\forsectionnumbers=\hbox to .1\linewidth
- \bgroup\color@begingroup\hss\etocskipfirstprefix}
- {\@gobble}
- {\etocnumber---}
- {\etocnumber\color@endgroup\egroup
- % for reasons I do not quite understand, in some pdf viewers the dots
- % do not completely disappear if here \fboxsep0pt is used.
- % (problèmes liés à l'anti-aliasing, sur Mac OS X, Skim, Preview...)
- % (j'ai maintenu ici la méthode de mon post sur stackexchange, mais
- % sans doute je pourrais réfléchir à une autre façon évitant d'avoir à
- % « effacer »)
- \fboxsep=.5pt\colorbox{white}{\box\forsectionnumbers}\par
- \ifextraiidone\else
- \begin{center}\bfseries Kongruenz.\end{center}
- \noindent\makebox[.15\linewidth][r]{\textsc{\bfseries Übung.}}\par
- \fi\extraiidonetrue
- }
- \makeatother
-
- \renewcommand{\etocinnertopsep}{0pt}
-
- \etocruledstyle[1]{%
- \parbox{\linewidth}{%
- \centering
- \textsc{\bfseries\LARGE\MakeUppercase{Inhaltsverzeichnis}}\\
- \rule{.2\linewidth}{2pt}}%
- }
-
- \etocsetnexttocdepth{dummysection}
-
- \tableofcontents
-
-\makeatletter
- \def\adddummysection {\stepcounter{dummysection}%
- \addtocontents {toc}{\protect\contentsline
- {dummysection}{\protect\numberline{\thedummysection}}%
- {\the\dummypage }%
- %\ifEtoc@hyperref ou \ifdefined\hyperref si e-TeX
- {\@currentHref }%
- %\fi
- }}
-
- \def\adddummychapter #1{\stepcounter{dummychapter}%
- \advance\dummypage2
- \addtocontents {toc}{\protect\contentsline
- {dummychapter}{\protect\numberline{\thedummychapter}#1}%
- {\the\dummypage }%
- %\ifEtoc@hyperref ou \ifdefined\hyperref si e-TeX
- {\@currentHref }%
- %\fi
- }}
-
- \def\adddummychapno #1{\advance\dummypage2
- \addtocontents {toc}{\protect\contentsline
- {dummychapter}{#1}{\the\dummypage }%
- %\ifEtoc@hyperref ou \ifdefined\hyperref si e-TeX
- {\@currentHref }%
- %\fi
- }}
-
- \def\adddummypart #1{\stepcounter{dummypart}%
- \advance\dummypage4
- \addtocontents {toc}{\protect\contentsline
- {dummypart}{\protect\numberline{\Roman{dummypart}}#1}%
- {\the\dummypage }%
- %\ifEtoc@hyperref ou \ifdefined\hyperref si e-TeX
- {\@currentHref }%
- %\fi
- }}
-\makeatother
-
- \newcount\dummypage \dummypage-1
-
- \adddummypart {}
-
- \adddummychapno {Einleitung}
-
- \newcount\tempcount
-
- \loop\advance\tempcount by 1
- \adddummysection
- \ifnum\tempcount<8
- \repeat
-
- \adddummychapter {Kongruenz von Subjekt und Verb}
-
- \loop\advance\tempcount by 1
- \adddummysection
- \ifnum\tempcount<17
- \repeat
-
- \adddummychapter {Kongruenz von Substantiven und Adjektiven}
-
- \loop\advance\tempcount by 1
- \adddummysection
- \ifnum\tempcount<22
- \repeat
-
- \adddummychapno {Kongruenz von Relativen und Antezendenten}
-
- \loop\advance\tempcount by 1
- \adddummysection
- \ifnum\tempcount<25
- \repeat
-
- \adddummypart {Government}
-
- \adddummychapter {Der Akkusativ}
-
- \adddummychapno {Allgemeine Anwendungen}
-
- \loop\advance\tempcount by 1
- \adddummysection
- \ifnum\tempcount<30
- \repeat
-
- \adddummychapno {Besondere Anwendungen}
-
- \loop\advance\tempcount by 1
- \adddummysection
- \ifnum\tempcount<37
- \repeat
-
- \adddummychapter {Verbrektion über zwei Akkusative}
-
- \loop\advance\tempcount by 1
- \adddummysection
- \ifnum\tempcount<41
- \repeat
-
- \adddummychapter {Der Kausativ}
-
- \loop\advance\tempcount by 1
- \adddummysection
- \ifnum\tempcount<49
- \repeat
-
- \adddummychapter {Der Instrumental}
-
- \adddummychapno {Allgemeine Anwendungen}
-
- \loop\advance\tempcount by 1
- \adddummysection
- \ifnum\tempcount<54
- \repeat
-
- \adddummychapno {Besondere Anwendungen}
-
- \loop\advance\tempcount by 1
- \adddummysection
- \ifnum\tempcount<59
- \repeat
-
- \adddummychapter {Der Dativ}
-
- \adddummychapno {Allgemeine Anwendungen}
-
- \loop\advance\tempcount by 1
- \adddummysection
- \ifnum\tempcount<65
- \repeat
-
- \adddummychapno {Besondere Anwendungen}
-
- \loop\advance\tempcount by 1
- \adddummysection
- \ifnum\tempcount<71
- \repeat
-
- \adddummychapter {Der Ablativ}
-
- \adddummychapno {Allgemeine Anwendungen}
-
- \loop\advance\tempcount by 1
- \adddummysection
- \ifnum\tempcount<75
- \repeat
-
- \adddummychapno {Besondere Anwendungen}
-
- \loop\advance\tempcount by 1
- \adddummysection
- \ifnum\tempcount<86
- \repeat
-
- \adddummychapter {Der Lokativ}
-
- \adddummychapno {Allgemeine Anwendungen}
-
- \loop\advance\tempcount by 1
- \adddummysection
- \ifnum\tempcount<92
- \repeat
-
- \adddummychapno {Besondere Anwendungen}
-
- \loop\advance\tempcount by 1
- \adddummysection
- \ifnum\tempcount<100
- \repeat
-\endgroup
-
-\section{Ein weiterer Kompatibilitätsmodus}
-
-Wie in \autoref{ssub:compat} erläutert, sagen die Befehle
-\csa{etocstandardlines} und \csa{etocstandarddisplaystyle} \etoc im
-Wesentlichen, wie man als Beobachter fungiert. Das Dokumentenklasse-Layout für
-das Inhaltsverzeichnis wird dann gehorchen. Es gibt keine Möglichkeit, dieses
-Standard-Layout aus dem Paket anzupassen (ändern von Schriftarten, Rändern,
-vertikalen Abständen, etc.) . Definieren Sie dazu ein Paket von dieser Funktion;
-weil entweder \etoc (vorübergehend vielleicht) im Kompatibilitätsmodus ohne
-Anpassung auf seinen Teil möglich ist oder der Benutzer hat das Layout in
-\csa{etocsetstyle}-Befehlen angegeben (und \csa{etocsettocstyle}) ist (angeblich
-\ldots ) in der kompletten Steuerung.
-
-Nun, es ist eigentlich eine Alternative. Es ist möglich, die Verwendung der
-\csa{etocsetstyle}-Befehle zu nutzen, um einen künstlichen Kompatibilitätsmodus
-neu zu erstellen, um Effekte zu erreichen, wie die folgenden, alle Dinge
-gleichen andererseits dem Dokumentenklassen-Standard:
-\begin{enumerate}[noitemsep]
-\item Enthält der |hyperref|-Link nur die Namen, aber nicht die Anzahl der
- jeweils zu kapselnden Einträge der Inhaltstabellen;
-\item verwenden Sie den Dokumentenklassen-Stil für Kapitel und Abschnitte, aber
- ändern Sie es nur für Teilbereiche;
-\end{enumerate}
-
-Hier ist beschrieben, wie Sie vorgehen müssen. Man nimmt in die Präambel:
-\begin{verbatim}
-\makeatletter
-\newcommand{\MyStandardTOC}{%
- \begingroup
- \let\savedpartline\l@part
- \let\savedchapterline\l@chapter %% remove if article/scrartcl class
- \let\savedsectionline\l@section
- \let\savedsubsectionline\l@subsection
- % and so on if \subsubsection, etc... is used
- %
- % for the book or article classes:
- \etocsetstyle{part}{}{}
- {\savedpartline{\etocnumber\hspace{1em}\etocname}{\etocpage}}{}%
- % for the scrbook or scrartcl classes:
- \etocsetstyle{part}{}{}
- {\savedpartline{\numberline{\etocnumber}\etocname}{\etocpage}}{}%
- % identical in book/article/scrbook/scrartcl classes:
- \etocsetstyle{chapter}{}{} %%% only for book and scrbook
- {\savedchapterline{\numberline{\etocnumber}\etocname}{\etocpage}}{}%
- \etocsetstyle{section}{}{}
- {\savedsectionline{\numberline{\etocnumber}\etocname}{\etocpage}}{}%
- \etocsetstyle{subsection}{}{}
- {\savedsubsectionline{\numberline{\etocnumber}\etocname}{\etocpage}}{}%
- % etc... if further sectioning units are used
- % (see the text for what to do with the memoir class)
- \etocstandarddisplaystyle % this is for the title, page-marks, etc...
- \tableofcontents
- \endgroup}
-\makeatother
-\end{verbatim}
-Natürlich ist es so, wenn das Dokument nur ein Inhaltsverzeichnis hat, dann gibt
-es keine Notwendigkeit, die Befehle in ein Makro zu setzen oder sogar in eine
-Gruppe. \footnote{Und wenn darüber hinaus, um das gleiche Layout wie im Standard
-zu halten, kann man sich die Frage stellen, warum man \etoc benutzt \ldots\ Es
-gibt \emph{einen} guten Grund: Zahlen und Namen sind separate
-\texttt{hyperref}-Links, nach der Regel gibt es nur eine Verbindung, die sowohl
-die Nummer und den Namen auf einem toc-Eintrag entsprechen.} Mit dem Befehl
-\etoc ist ein Inhaltsverzeichnis völlig identisch zu einem von der
-Dokumentenklasse: |article|, |book|, |scrartcl|, |scrbook|. \footnote{Für die
-|memoir|-Klasse braucht man ein bisschen mehr: Jeder der Befehle
-\csa{booknumberline},
-\csa{partnumberline} und \csa{chapternumberline} müssen in ein
-\csa{let} gebettet werden und sie ergeben dann ein:
-\centeredline{%
-\csa{etocsetstyle\{chapter\}\{\}\{\}\{\string\savedchapterline\{%
-\string\savedchapternumberline}}
-\hbox to \linewidth{\hfil\hfil \ttfamily
- \{\csa{etocnumber}\}\csa{etocname}\}\{\csa{etocpage}\}\}\{\}\hfil}
-(und analog für |part| und |book|).}
-Die Anzahl und die Namen der einzelnen Einträge sind jeweils separat in einem
-|hyperref|-Link, wie es immer der Fall bei \etoc ist, wenn man nicht im
-Kompatibilitätsmodus ist. Ersetzt man \csa{etocnumber} mit \csa{etocthenumber},
-dann ergibt es ein Inhaltsverzeichnis, wo die Zahlen nicht mehr verlinkt sind,
-aber die Namen noch. Oder man kann sich entscheiden, \csa{etocthename} zu
-verwenden und eine Hyperlink-Nummer mit \csa{etocnumber} zu erhalten.
-
-Hier ist ein subtiles Beispiel, wo nur geringfügig die "`sections"' modifiziert
-wurden (hinzufügen von Farbe für die Nummer und das Entfernen des
-|hyperref|-Links) und die Unterabschnitte, wie in der Standardeinstellung,
-\emph{mit Ausnahme} von einer bestimmte "`section"' im Layout komplett geändert
-wurde: \MyQuasiStandardTOC{\ref{toc:overview}} \bigskip Dieses Beispiel hat nur
-Abschnitte und Unterabschnitte und der in \csa{MyStandardTOC} verwendete Code
-war:
-\begin{verbatim}
-\etocsetstyle{section}{}
- {\ifnum\etocthenumber=3
- \etocsetstyle{subsection}
- {\par\nopagebreak\begingroup
- \leftskip1.5em \rightskip\@tocrmarg \parfillskip\@flushglue
- \parindent 0pt \normalfont\normalsize\rmfamily\itshape
- % \columnsep1em
- % \begin{minipage}{\dimexpr\linewidth-\leftskip-\rightskip\relax}%
- % \begin{multicols}{2}%
- \etocskipfirstprefix}
- {\allowbreak\,--\,}
- {\etocname\ \textup{(\etocnumber)}}
- {.\par\endgroup}%
- % {.\par\end{multicols}\end{minipage}\par\endgroup}%
- \else
- \etocsetstyle{subsection}
- {}{}
- {\savedsubsectionline{\numberline{\etocnumber}\etocname}{\etocpage}}
- {}%
- \fi}
- {\savedsectionline{\numberline{{\color{cyan}\etocthenumber}}\etocname}{\etocpage}}
- {}%
-\end{verbatim}
-
-Beachten Sie die Seite mit den Kopf-Zeichen, welche man dem Inhaltsverzeichnis
-hinzufügen kann. Abschnitte und Unterabschnitte sind genauso wie im Standard
-(mit Ausnahme der Unterabschnitte, welche von einem bestimmten
-Benutzer-Abschnitt aus gewählt wird und bis auf die Farbe der
-Abschnittsnummern), ohne das explizit die Länge, die Schriftart oder andere
-Formatierungsanweisungen gegeben werden. Aber wir mussten die |scrartcl|-Quellen
-untersuchen, um festzustellen, was zu nehmen ist für \csa{leftskip} und
-\csa{rightskip} für unsere Nutzer-sections-Einträge.
-
-\section{Das TOC als ein Baum}\label{tocastree}
-
-Mit |tikz|\footnote{\url{http://ctan.org/pkg/pgf}} und dem Paket
-|forest|\footnote{\url{http://ctan.org/pkg/forest}} wird das Inhaltsverzeichnis
-als Baum angezeigt. Die Technik ist, den von \etoc geänderten Befehl
-\csa{tableofcontents} nicht für den Satz zu verwenden, sondern ein Makro, oder
-besser hier eine \emph{symbolische Liste}-Variable vorzubereiten, mit allen
-Anweisungen, die später ausgeführt werden. \textsc{Leslie Lamport}'s Buch
-erwähnt überhaupt nicht die symbolische Liste und \LaTeX{} vermittelt den
-Eindruck, nicht wirklich darauf zu warten, dass die Mehrheit der Nutzer immer
-über sie (oder begrenzte Makros) etwas hört; die ganze Sache und der folgende
-Abschnitt sind daher für fortgeschrittene Anwender.
-
-Setzt man die \csa{etocnumber}- und \csa{etocname}-Befehle in \csa{treetok},
-dann würde das nichts nützen: Auf welche Zahl oder Namen würde sich das dann
-beziehen, in einer verzögerten Ausführung?
-
-Wir brauchen die Speicherung der Makro-Namen, aber nicht die Makro-Inhalte. Und
-wir wollen auch die korrekten |hyperref|-Hyper-Links erhalten.\footnote{Dieses
-Handbuch bis zu der Version vom 14. Mai 2013 verwendete das Paket |tikz-qtree|,
-aber es gab Probleme mit den Hyper-Links. Kein solches Problem entsteht mit
-|forest| oder mit der nativen Syntax |tikz| für Bäume (die im nächsten Abschnitt
-dargestellt sind).} Die Hyper-Link-Informationen von \etoc setzen innen
-\csa{etocname}, etc. \ldots, aber es ist nur ein Zeiger, nicht lagerungsfähig
-für die spätere Verwendung; aber das Paket bietet \csa{etocthelinkednumber},
-\csa{etocthelinkedname} und \csa{etocthelinkedpage}, deren Inhalte enthalten den
-Hyper-Link in einer Form, die gespeichert und später wiederverwendet werden
-können.
-
-Aus diesem |forest|-Baum haben wir ganz besondere \etoc-Stile für Abschnitte und
-Unterabschnitte konzipiert. Sie verwenden ein symbolisches Listenregister mit
-dem Namen |\treetok| und ein Makro |\appendtotok|, deren Aufgabe es ist, zu
-einer bestimmten symbolischen Listenvariablen den Inhalt eines Makros als
-zweites Argument anzuhängen. All dies wird in Reaktion auf einen Befehl
-|\tableofcontents| passieren, aber noch ist \emph{nichts} in deren
-Prozess.\footnote{Es gibt immer ein \csa{par}, welches kein Problem ist, es kann
-aber unterdrückt werden, wenn der Bedarf über den Befehl \csb{etocinline} oder
-dessen Synonym \csb{etocnopar} besteht.} Das ist der spätere Job einer
-|forest|-Umgebung, die den Inhalt von |\treetok| wiedergeben soll.
-\newtoks\treetok
-\newtoks\tmptok
-
-\newcommand*\appendtotok[2]{% #1=toks variable, #2=macro, expands once #2
- #1\expandafter\expandafter\expandafter
- {\expandafter\the\expandafter #1#2}}
-
-
-% 7 mars: j'utilise \etocthelinkedname défini à partir de 1.07f
-% mais bien sûr je sais que ça ne marche pas (sauf dans l'arbre pour le lien de
-% la section du bas) dans un QTree. Mais ça marche parfaitement dans un arbre
-% TikZ natif.
-
-% 9 septembre 2013: je remplace QTree par Forest, et il n'y a pas de problème
-% avec les hyperliens, ça marche out of the box (une fois que j'ai appris un peu
-% de sa syntaxe et de celle de TikZ).
-
-\newcommand*\PrepareSectionNode{%
- \tmptok {\centering\bfseries}%
- \appendtotok\tmptok\etocthelinkedname
- \edef\foresttreenode{ [{\noexpand\parbox{2cm}{\the\tmptok}}}%
-}
-
-% 7 mars: j'utilise maintenant \etocthelinkedname
-\newcommand*{\PrepareSubsectionNode}{%
- \tmptok {\raggedright}% j'ai essayé aussi avec \sloppy
- \appendtotok\tmptok\etocthelinkedname
- \edef\foresttreenode{ [{\noexpand\parbox{6cm}{\the\tmptok}}}%
-}
-
-\etocsetstyle{section}
- {\etocskipfirstprefix}
- {\appendtotok\treetok{ ]}}
- {\PrepareSectionNode \appendtotok\treetok\foresttreenode}
- {\appendtotok\treetok{ ]}}
-
-\etocsetstyle{subsection}
- {\etocskipfirstprefix}
- {\appendtotok\treetok{ ]}}
- {\PrepareSubsectionNode \appendtotok\treetok\foresttreenode}
- {\appendtotok\treetok{ ]}}
-
-\etocsettocstyle
- {\treetok{[{\hyperref[part:overview]{Überblick}}}}
- {\global\appendtotok\treetok{ ]}}
-
-
-% 11 octobre
-% forest ne veut pas @\the\treetok avec un \treetok vide, donc
-% il faut lui donner une valeur par défaut.
-\treetok{[{run latex again}]}
-
-% 12 octobre
-% pour que varioref fonctionne bien, je dois mettre la \tableofcontents
-% au plus près de l'environnement forest
-
-\begin{figure}[th!]\centering
- \etocsetnexttocdepth{subsection}
- \tableofcontents \label{toc:forest}\ref{toc:overview}
- \hypersetup{hidelinks}%
- \bracketset{action character=@}
- \begin{forest}
- for tree={anchor=center,child anchor=west,
- grow'=east,draw,thick,
- edge={draw,thick,dashed,color=teal}},
- where={level()==1}{circle,thick,fill=blue!5,
- before computing xy={l=3cm}}{},
- where={level()==2}{fill=red!5,
- before computing xy={l=6cm}}{},
- % je trouve ce truc pour une position absolue. OK!
- rectangle, thick, fill=cyan!5, inner sep=6pt,
- @\the\treetok
- \end{forest}
- \centeredline{Ein Inhalsverzeichnis in Form eines |forest|-Baums.}
-\end{figure}
-
-Der resultierende Baum wird in einem \hyperref[toc:forest]{Puffer} angelegt, welcher
-\vpageref[oben]{toc:forest} erscheint. Hier ist der zur Herstellung notwendige Code:
-\begin{verbatim}
-\newtoks\treetok
-\newtoks\tmptok
-
-\newcommand*\appendtotok[2]{% #1=toks variable, #2=macro, expands once #2
- #1\expandafter\expandafter\expandafter
- {\expandafter\the\expandafter #1#2}}
-
-\newcommand*\PrepareSectionNode{%
- \tmptok {\centering\bfseries}%
- \appendtotok\tmptok\etocthelinkedname
- \edef\foresttreenode{ [{\noexpand\parbox{2cm}{\the\tmptok}}}%
-}
-
-\newcommand*{\PrepareSubsectionNode}{%
- \tmptok {\raggedright}%
- \appendtotok\tmptok\etocthelinkedname
- \edef\foresttreenode{ [{\noexpand\parbox{6cm}{\the\tmptok}}}%
-}
-
-\etocsetstyle{section}
- {\etocskipfirstprefix}
- {\appendtotok\treetok{ ]}}
- {\PrepareSectionNode \appendtotok\treetok\foresttreenode}
- {\appendtotok\treetok{ ]}}
-
-\etocsetstyle{subsection}
- {\etocskipfirstprefix}
- {\appendtotok\treetok{ ]}}
- {\PrepareSubsectionNode \appendtotok\treetok\foresttreenode}
- {\appendtotok\treetok{ ]}}
-
-\etocsettocstyle
- {\treetok{[{\hyperref[part:overview]{Überblick}}}}
- {\global\appendtotok\treetok{ ]}}
-
-% forest does not like @\the\treetok if \treetok is empty. On first latex
-% run, this will be the case because the TOC style defined above will not
-% have been executed, as the label {toc:overview} does not refer to a valid
-% TOC yet. So we must give a safe default value to \treetok
-\treetok{[{run latex again}]}
-
-\begin{figure}[th!]\centering
- \etocsetnexttocdepth{subsection}
- \tableofcontents \label{toc:forest}\ref{toc:overview}
- \hypersetup{hidelinks}%
- \bracketset{action character=@}
- \begin{forest}
- for tree={anchor=center,child anchor=west,
- grow'=east,draw,thick,
- edge={draw,thick,dashed,color=teal}},
- where={level()==1}{circle,thick,fill=blue!5,
- before computing xy={l=3cm}}{},
- where={level()==2}{fill=red!5,
- before computing xy={l=6cm}}{},
- rectangle, thick, fill=cyan!5, inner sep=6pt,
- @\the\treetok
- \end{forest}
-\end{figure}
-\end{verbatim}
-
-Warum |\hypersetup{hidelinks}|? Wie in \autoref{ssec:hidelinks} erläutert ist,
-werden die Links in Inhaltsverzeichnissen nicht eingefärbt, noch gerahmt, so
-dass dieses Dokument den Befehl
-|\hypersetup{hidelinks}|
-hinzufügt. Aber immer werden die |\treetok|-Inhalte in die
-|\hyperlink|-Ursprungsbefehle in |\etocthelinkedname| ausgepackt, etc. \ldots{}
-Sie werden in der normalen Umgebung für Links (die in diesem Dokument zu
-kolorieren sind) ausgeführt. Der \etoc -Code versucht zu erraten, was der
-aktuelle "`Stil"' für Links ist (ein Begriff, der nicht wirklich von |hyperref|
-vorausgesetzt zu sein scheint) und speichert es in |\etocthelinkedname|, etc.
-\ldots, Ich entschied mich für die einfachere Lösung, es dem Benutzer zu
-überlassen, ob er es neu erstellt, was auch immer für Bedingungen erwünscht
-sind. So, hier ist es notwendig, das |\hypersetup{hidelinks}| in dem
-|figure|-Umgebung neu zu erstellen.
-
-Es gibt einige andere Beispiele in dieser Dokumentation, wobei
-|\tableofcontents| verwendet wird, um Material zu haben für den späteren
-Schriftsatz:
-\begin{itemize}
-\item Für das Drucken der Statistiken zu Beginn der einzelnen Abschnitte (siehe
- \autoref{ssec:statistics}) wurden unbeschädigte Boxen benutzt (das Problem der
- Darstellung der Links funktioniert nicht).
-\item Zum Setzen des Inhaltsverzeichnisses als eine Tabelle mit der Methode von
- \autoref{ssec:tocastableold};
- auch dort werden wir |\hypersetup{hidelinks}| setzen, nachdem wir die Namen,
- Nummern und Seitennummern in einem symbolischen Listenregister gesetzt haben.
-\item Und zwei weitere Baum-Beispiele sind im nächsten Abschnitt.
-\end{itemize}
-
-
-\section{Das TOC als ein Molekül}\label{ssec:molecule}
-
-Es ist auch möglich, einen Inhaltsverzeichnisbaum nach der TikZ-Syntax für Bäume
-zu konstruieren: Aber das ist eine kompliziertere Aufgabe für die \etoc
-Linienstile, welche die Klammern in einer Art und Weise von \TeX{} behandeln.
-(Sie brauchen für das Auffüllen der symbolischen Liste im Zusammenhang mit jedem
-Schritt immer eine Balance, sonst müssen immer kompliziertere Tricks angewandt
-werden.).
-
-Die einfachste Strategie ist es, eine symbolische Liste zuzuweisen (oder Sie
-verwenden ein Makro) für jede Ebene: Wir brauchen ein \csa{parttok}, ein
-\csa{chaptertok}, ein \csa{sectiontok} und ein \csa{subsectiontok}, um in der
-Aufgabe die \csa{treetok} zu befüllen. Wir interessieren uns hier für die
-Tabelle der Inhalte von diesem (oder einem anderen) Dokumententeil, nur ein
-\csa{sectiontok} und ein \csa{subsectiontok} wird dafür gebraucht.
-
-\begin{verbatim}
-% \newtoks\treetok % already done earlier
-\newtoks\sectiontok \newtoks\subsectiontok \newcommand*{\treenode}{}
-
-\newcommand*{\appendchildtree}[2]{% token list t1 becomes: t1 child {t2}
- \edef\tmp{\the#1 child {\the#2}}%
- #1\expandafter{\tmp}%
-}
-\newcommand*{\preparetreenode}{%
- \tmptok\expandafter{\etocthelinkednumber}% expanded one time (mandatory)
- \edef\treenode{node {\the\tmptok}}%
-}
-
-\etocsetstyle{section}
- {\etocskipfirstprefix}
- {\appendchildtree\treetok\sectiontok}
- {\preparetreenode \sectiontok\expandafter{\treenode}}
- {\appendchildtree\treetok\sectiontok}
-
-\etocsetstyle{subsection}
- {\etocskipfirstprefix}
- {\appendchildtree\sectiontok\subsectiontok}
- {\preparetreenode \subsectiontok\expandafter{\treenode}}
- {\appendchildtree\sectiontok\subsectiontok}
-
-\etocsettocstyle
- {\treetok{\node {\hyperref[part:overview]{Overview}}}}
- {\global\appendtotok\treetok{ ;}}
-
-% moved to the inside of the figure environment for correct \pageref{toc:molecule}
-% \etocsetnexttocdepth{subsection}
-% \tableofcontents \label{toc:molecule} \ref{toc:overview}
-\end{verbatim}
-
-\newtoks\sectiontok
-\newtoks\subsectiontok
-\newcommand*\treenode {}
-
-\newcommand*{\appendchildtree}[2]{% token list t1 becomes: t1 child {t2}
- \edef\tmp{\the#1 child {\the#2}}%
- #1\expandafter{\tmp}%
-}
-
-\newcommand*{\preparetreenode}{%
- \tmptok\expandafter{\etocthelinkednumber}%
- \edef\treenode{node {\the\tmptok}}%
-}
-
-\etocsetstyle{section}
- {\etocskipfirstprefix}
- {\appendchildtree\treetok\sectiontok}
- {\preparetreenode
- \sectiontok\expandafter{\treenode}}
- {\appendchildtree\treetok\sectiontok}
-
-\etocsetstyle{subsection}
- {\etocskipfirstprefix}
- {\appendchildtree\sectiontok\subsectiontok}
- {\preparetreenode
- \subsectiontok\expandafter{\treenode}}
- {\appendchildtree\sectiontok\subsectiontok}
-
-\etocsettocstyle
- {\treetok{\node {\hyperref[part:overview]{Überblick}}}}
- {\global\appendtotok\treetok{ ;}}
-
-\begin{figure}[th!]\centering
-\etocsetnexttocdepth{subsection}
- \tableofcontents \label{toc:molecule}\ref{toc:overview}
- \hypersetup{hidelinks}%
- \begin{tikzpicture}
- [grow cyclic,
- level 1/.style={level distance=4cm,sibling angle=72},
- level 2/.style={level distance=2cm,sibling angle=60},
- every node/.style={ball color=red,circle,text=SkyBlue},
- edge from parent path={[dashed,very thick,color=cyan]
- (\tikzparentnode) --(\tikzchildnode)}]
- \the\treetok
- \end{tikzpicture}
- \centeredline{Ein Inhaltsverzeichnis als ein "`Molekül"'.}
-\end{figure}
-
-% Pour que \pageref fonctionne correctement, je dois mettre
-% le \tableofcontents dans la figure.
-
-Der |\tableofcontents|-Befehl erscheint direkt über der Umgebung in dem
-|tikzpicture|-Umfeld und ist eine Gleitfigur (über Inhaltslabel sicherlich auf
-die gleiche Seite zu beziehen, wie die in dem das Bild tatsächlich gedruckt
-werden soll). Wir erhalten somit das Inhaltsverzeichnis als
-"`\hyperref[toc:molecule]{Molekül}"', welches oben erscheint
-\vpageref[above]{toc:molecule}. Hier ist der aktuelle, tatsächlich produzierte
-Code:
-\begin{verbatim}
-\begin{figure}[th!]\centering
- \etocsetnexttocdepth{subsection}
- \tableofcontents \label{toc:molecule} \ref{toc:overview}
- \hypersetup{hidelinks}%
- \begin{tikzpicture}
- [grow cyclic,
- level 1/.style={level distance=4cm,sibling angle=72},
- level 2/.style={level distance=2cm,sibling angle=60},
- every node/.style={ball color=red,circle,text=SkyBlue},
- edge from parent path={[dashed,very thick,color=cyan]
- (\tikzparentnode) --(\tikzchildnode)}]
- \the\treetok
- \end{tikzpicture}
-\end{figure}
-\end{verbatim}
-
-Dieses \hyperref[toc:molecule]{TikZ-TOC} ist komplett verlinkt, wie das
-vorherige \hyperref[toc:forest]{Forest-TOC} auch.
-
-\etocsettocstyle
- {\treetok{\node {\autoref{part:globalcmds}}}}
- {\global\appendtotok\treetok{ ;}}
-
-\etocsetnexttocdepth {subsection}
-\tableofcontents \ref{toc:globalcmds}
-
-\noindent
-\parbox{4cm}{\hypersetup{hidelinks}%
- \begin{tikzpicture}
- [grow cyclic,
- level 1/.style={level distance=2.5cm,sibling angle=60},
- level 2/.style={level distance=1cm,sibling angle=45},
- every node/.style={ball color=red!50,circle,text=black},
- edge from parent path={[very thick,color=cyan]
- (\tikzparentnode) --(\tikzchildnode)}]
- \the\treetok
- \end{tikzpicture}}%
-\begin{minipage}{\dimexpr\linewidth-4cm\relax}
- Seitlich ist das (völlig mit Hyper-Links versehene) Inhaltsverzeichnis von
- \autoref{part:globalcmds}.
- \def\MacroFont{\ttfamily\small\hyphenchar\font-1 \baselineskip10pt\relax}%
-\begin{verbatim}
-\etocsettocstyle
- {\treetok{\node {\autoref{part:globalcmds}}}}
- {\global\appendtotok\treetok{ ;}}
-\etocsetnexttocdepth {subsection}
-\tableofcontents \ref{toc:globalcmds}
-\noindent
-\parbox{4cm}{\hypersetup{hidelinks}%
- \begin{tikzpicture}
- [grow cyclic,
- level 1/.style={level distance=2.5cm,sibling angle=60},
- level 2/.style={level distance=1cm,sibling angle=45},
- every node/.style={ball color=red!50,circle,text=black},
- edge from parent path={[very thick,color=cyan]
- (\tikzparentnode) --(\tikzchildnode)}]
- \the\treetok
- \end{tikzpicture}}%
-...
-\end{verbatim}
-\end{minipage}
-
-\section{Das TOC als eine Tabelle}
-\label{sec:tocastable}
-
-\textbf{UEBERSETZUNG NOETIG}
-\begin{otherlanguage}{english}
-With release |1.08| it is easier to typeset a TOC as a table. It is
-possible to open a tabular in the title part of the TOC (first argument
-to \csb{etocsettocstyle}) and then close it after the contents (second
-argument to \csb{etocsettocstyle}), and specify in the line styles how
-to use the tabulation |&| and tabular end of row |\\|. There are some
-conditions and a few caveats:
-
-\begin{enumerate}
-\item it is mandatory to issue \csb{etocglobaldefs} for \etoc's
- definitions to have global scope,
-\item use \csb{etocthelinkedname},
- \csb{etocthelinkednumber} and \csb{etocthelinkedpage} in preference to
- \csb{etocname}, \csb{etocnumber}, \csb{etocpage}: if |hyperref| is
- present, this is mandatory, and if it is not present, it does not hurt
- and gives the same output,
-\item it is impossible to start one of the \meta{start}, \meta{prefix},
- \meta{contents} or \meta{finish} specification with a sole |\hline|,
- \emph{i.e.} one not preceded by a |\\| (it is however possible to put
- |\\| at the end of \meta{prefix} and the |\hline| at the start of
- \meta{contents}).
-\item as is explained next, it is recommended to use the |\\| at
- the start of the \meta{prefix} or \meta{contents}
- specifications to close the \emph{previous} row, not at the end
- to close the \emph{current} row; when the TOC is a partial one (a
- \csa{localtableofcontents}) this advice becomes (in almost all
- situations) mandatory.
-\end{enumerate}
-
-Here is an example of a TOC as a |longtable|, as is possible relatively
-simply now with |1.08|. The code follows.
-\end{otherlanguage}
-
-\begingroup
-\etocglobaldefs
-\etocsetstyle{part}
- {}
- {\\\hline}
- {\strut\etocthelinkednumber &\bfseries\etocthelinkedname
- &\etocthelinkedpage }
- {}
-\etocsetstyle{section}
- {}
- {\etociffirst{\etocifnumbered{\\\hline}{\\\hline\hline}}{\\}}
- {\etocthelinkednumber&\etocthelinkedname &\etocthelinkedpage }
- {}
-\etocsetstyle{subsection}
- {}
- {\\}
- {&\makebox[1cm][c]{\etocthelinkednumber}%
- \parbox[t]{\dimexpr6cm-\tabcolsep\relax}
- {\sloppy\itshape\etocthelinkedname\strut}%
- &\itshape\etocthelinkedpage }
- {}
-\etocsettocstyle
- {\hypersetup{hidelinks}%
- \begin{longtable}{|>{\bfseries}c|p{7cm}|r|}
- \hline
- \multicolumn{3}{|c|}{\Large\bfseries\strut\MakeUppercase{\contentsname}}%
- }
- {\\\hline\end{longtable}}
-\etocsetnexttocdepth {subsection}
-\tableofcontents
-\endgroup
-
-\begin{verbatim}
-UEBERSETZUNG NOETIG
-\begingroup
-\etocglobaldefs % necessary for \etocthename etc... to survive &
-
-% we must use \etocthelinkednumber and not \etocnumber if hyperref is
-% present, because \etocnumber does not incorporate a fully expanded
-% hyperlink destination specification, hence that part gets lost when a
-% & is encountered
-
-% observe the locations of the \\
-\etocsetstyle{part}
- {}
- {\\\hline}
- {\strut\etocthelinkednumber &\bfseries\etocthelinkedname
- &\etocthelinkedpage }
- {}
-
-\etocsetstyle{section}
- {}
- {\etociffirst{\etocifnumbered{\\\hline}{\\\hline\hline}}{\\}}
- {\etocthelinkednumber&\etocthelinkedname &\etocthelinkedpage }
- {}
-
-\etocsetstyle{subsection}
- {}
- {\\}
- {&\makebox[1cm][c]{\etocthelinkednumber}%
- \parbox[t]{\dimexpr6cm-\tabcolsep\relax}
- {\sloppy\itshape\etocthelinkedname\strut}%
- &\itshape\etocthelinkedpage }
- {}
-
-\etocsettocstyle
- {\hypersetup{hidelinks}%
- \begin{longtable}{|>{\bfseries}c|p{7cm}|r|}
- \hline
- \multicolumn{3}{|c|}{\Large\bfseries TABLE OF CONTENTS}%
- }
- {\\\hline\end{longtable}}
-
-\etocsetnexttocdepth {subsection}
-
-\tableofcontents
-\endgroup
-\end{verbatim}
-
-\textbf{UEBERSETZUNG NOETIG}
-
-\begin{otherlanguage}{english}
-Examining the code above the reader will wonder why the |\\| are
-always given first in \meta{prefix+contents} and not, as is more
-intuitive, rather last. In many cases one may indeed construct
-TOC-as-tables with the |\\| located at the end of the style
-specifications (but almost never for a \csa{localtableofcontents}).
-The problem in the previous example was with the positioning of the
-|\hline|'s.
-
-Due to technical aspects of how \TeX{} constructs alignments any
-definition or assignment done after an |\\| starts a new row, and
-thus makes |\hline| an illegal token (this shows as a |misplaced
-\noalign| error.) Not only does \etoc have to do such definitions
-to construct \csb{etocname} etc..., it is furthermore the case that
-some packages put things in the |.toc| file and as a result there
-is never any guarantee that between two \csa{contentsline} there
-will not be such a token like |\relax| which in the contexts of
-alignments forces \TeX{} to start a cell and thus makes it
-impossible then to insert an |\hline|.
-
-The safest way is to start with an |\\| each line style
-specification. We had a little problem with the fact that we wanted
-parts not only to have a rule above them (easy, they do |\\\hline|)
-but also below them: after each part there is a section, thus the
-section which are first of their kind used the \csb{etociffirst}
-conditional branching. The attentive reader will notice one last
-subtlety: the title was supposed to be followed not by one, but by
-two |\hline|'s.
-
-To solve this we could have used a one-time macro redefining itself, but
-we noticed that the title was followed by the unnumbered Abstract, thus
-the \csb{etocifnumbered} switch came to the rescue.
-
-Last technical note: because we put the |\\| inside the branches, there
-was no need to employ the expandable variants \csb{etocxiffirst} and
-\csb{etocxifnumbered}.
-
-For the hardliner's old way of obtaining the exact same result, see
-\autoref{ssec:tocastableold}.
-
-Here is also a much simpler example. It is a local table of
-contents.
-\end{otherlanguage}
-
-\begin{center}
-\etocsetstyle{section}
- {}
- {\etociffirst{\\\hline\hline}{\\\hline}}
- {\etocthelinkedname&
- \etocthelinkednumber&
- \etocthelinkedpage }
- {}
-
-\etocsettocstyle
- {\hypersetup{hidelinks}\begin{tabular}{|p{4cm}|c|c|}\hline
- \multicolumn{1}{|c|}{\bfseries Abschnitt}&
- \bfseries Nummer&
- \bfseries Seite}
- {\\\hline\end{tabular}}
-
-\etocglobaldefs % VERPFLICHTEND !!
-\etocsetnexttocdepth{1}
-
-\tableofcontents\ref{toc:overview}
-\end{center}
-
-\begin{verbatim}
-\begin{center}
-\etocsetstyle{section}
- {}
- {\etociffirst{\\\hline\hline}{\\\hline}}
- {\etocthelinkedname&
- \etocthelinkednumber&
- \etocthelinkedpage }
- {}
-
-\etocsettocstyle
- {\hypersetup{hidelinks}\begin{tabular}{|p{4cm}|c|c|}\hline
- \multicolumn{1}{|c|}{\bfseries Abschnitt}&
- \bfseries Nummer&
- \bfseries Seite}
- {\\\hline\end{tabular}}
-
-\etocglobaldefs % VERPFLICHTEND !!
-\etocsetnexttocdepth{1}
-
-\tableofcontents\ref{toc:overview}
-\end{center}
-\end{verbatim}
-
-\subsection{Die Befehle \csbhyp{etocglobaldefs} und \csbhyp{etoclocaldefs}}
-\label{etocglobaldefs}
-\label{etoclocaldefs}
-
-\textbf{UEBERSETZUNG NOETIG}
-
-\begin{otherlanguage}{english}
-In \LaTeX{} the meaning of a command defined via |\newcommand\foo{...}| inside
-an environment (or group) vanishes from \TeX's memory on exit from this
-environment (or group). At times however it is needed to make definitions with
-global scope, for this \TeX{} has the primitive prefix |\global|.
-
-By default \etoc's definitions of \csb{etocname} etc... are local. This causes
-problems in certain contexts such as seen here with TOC as tables, but also
-with |enumitem| \emph{inline} variants of its standard environments, because
-the command |\item| then closes a group.
-
-After \csb{etocglobaldefs}, \etoc will make its definitions of \csb{etocname}
-etc... have global scope. For normal use this is not necessary. It does not hurt
-either to activate it systematically.
-
-To return to the default, use \csb{etoclocaldefs}. Note that both
-\csb{etocglobaldefs} and \csb{etoclocaldefs} actions are local to the
-environment or group where they are used.
-\end{otherlanguage}
-
-
-\clearpage
-\etocdepthtag.toc {linestyles}
-
-\part{Befehle für die TOC-Linienstile}
-\label{part:linestyles}
-
-\thispartstats
-
-\etocsetstyle{section}
-{\begin{enumerate}[leftmargin=.75cm, label=\etocifnumbered
- {{\fboxrule1pt\fcolorbox{green}{white}{\etocnumber}}}{}]}
-% Dec 7, 2012. I hit upon a problem whose origin I found was
-% with xcolor, as xcolor modifies \fbox
-% (try \section{\fbox{A}} with and without xcolor). The fix
-% was to \protect the \fbox used in the |enumitem| label.
-% Strangely enough, with |hyperref| active, the problem did
-% not show up. Anyhow I now use \fcolorbox rather than \fbox
-% and there is no problem anymore. Also I don't have now to
-% use \normalcolor which already needed protection.
-{\normalsize\bfseries\rmfamily\item}
-{\etocname{} (Seite \etocpage)}
-{\end{enumerate}}
-
-\etocsetstyle{subsection}
-{\begin{enumerate}[leftmargin=0cm, label=\etocnumber]}
-{\normalfont \item}
-{\etocname{} (S.~\etocpage)}
-{\end{enumerate}}
-
-\etocsetstyle{subsubsection}
-{\par\nobreak\begingroup\normalfont\footnotesize\itshape\etocskipfirstprefix}
-{\allowbreak\,--\,}
-{\etocname}
-{.\hfil\par\endgroup\pagebreak[3]}
-
-% 27 janvier 22:30
-% je définis les macros (non protégées)
-% \etocthename, \etocthenumber, \etocthepage
-
-\etocruledstyle[1]{\etocfontminusone\color{green}%
- \fboxrule1pt\fboxsep1ex
- \framebox[\linewidth]
- {\normalcolor\hss Inhalt von \autoref{part:linestyles}\hss}}
-
-\localtableofcontents \label{toc:a}
-
-\section{Der \csbhyp{etocsetstyle}-Befehl}
-\label{etocsetstyle}
-
-\subsection{Die \csbhyp{etocname}- und \csbhyp{etocpage}-Befehle}
-\label{etocname}
-\label{etocpage}
-
-Hier soll erläutert werden, wie \etoc\ dazu verwendet wurde, das
-Inhaltsverzeichnis am Beginn des zweiten Teils zu erstellen. Es handelt sich
-dabei um ein lokales Inhaltsverzeichnis, weshalb der Befehl \localtoc\ verwendet
-wurde.
-
-Wir müssen hierbei unterscheiden zwischen den Linienstilen (\emph{line styles})
-und dem Ausgabestil (\emph{toc display style}). Die \emph{line styles} erhält
-man grundsätzlich auf die folgende Art und Weise:
-
-
-\footnote{Das vorliegende Dokument hat
- {\ttfamily\string\renewcommand\string{%
- \string\familydefault\string}\string{\string\sfdefault\string}}
- in seiner Präambel, deshalb schaltet der Befehl \csa{normalfont} zur
- |sans| Schriftart; aus diesem Grund habe ich im Abschnitt line-style
- \csa{rmfamily} geschrieben.}
-
-\begingroup\small
-\begin{verbatim}
-\etocsetstyle{section}
-{\begin{enumerate}}
-{\normalsize\bfseries\rmfamily\item}
-{\etocname{} (page \etocpage)}
-{\end{enumerate}}
-
-\etocsetstyle{subsection}
-{\begin{enumerate}}
-{\normalfont\item}
-{\etocname{} (p.~\etocpage)}
-{\end{enumerate}}
-
-\etocsetstyle{subsubsection}
-{\par\nobreak\begingroup\normalfont
- \footnotesize\itshape\etocskipfirstprefix}
-{\allowbreak\,--\,}
-{\etocname}
-{.\hfil\par\endgroup\pagebreak[3]}
-\end{verbatim}
-\endgroup
-
-Diese provisorischen Stil-Definitionen beruhen auf der automatischen
-Nummerierung, die von der |enumerate|-Umgebung generiert wird, es ist aber
-wesentlich besser den Befehl \csb{etocnumber} innerhalb des Item-labels zu
-verwenden, denn das gibt das richtige Ergebnis. Die verbesserten Definitionen
-werden dahingehend später erklärt.
-
-Mit diesem Stil müsste man so
-einfallsreich sein, etwas zu designen, was nicht mit Abschnitten oder
-Unterabschnitten zu tun hat, vielleicht so etwas wie Superscripte. Nun,
-normalerweise braucht man Abschnitte und Unterabschnitte nicht nummeriert und
-aufgelistet in der TOC, also hat unser vermeintlicher Benutzer ein Design
-gewählt, welches dafür nichts bereitstellt und fügte noch hinzu:
-\begin{verbatim}
-\etocsetstyle{paragraph}{}{}{}{}
-\etocsetstyle{subparagraph}{}{}{}{}
-\end{verbatim}
-Das ist der gleiche Sachverhalt wie mit den Standardlinienstilen!
-
-Jeder \csb{etocsetstyle}-Befehl hat fünf notwendige Argumente:\\ \hbox to
-\linewidth {\hfil\csb{etocsetstyle}\color{blue}\marg{levelname}%
-\marg{start}\marg{prefix}\marg{contents}\marg{finish}\hfil} Die
-\meta{levelname}'s sind die Abschnittseinteilungen der
-Standard-Dokument-Klassen: Von \emph{part} (oder \emph{book}, welches von der
-|memoir|-Klasse benutzt wird) herunter bis zu \emph{subparagraph}.
-
-Der \meta{start}-Code wird ausgeführt, wenn ein toc-Eintrag dieses Levels
-gefunden wurde und der vorherige ein höheres Level hatte. Der \meta{finish}-Code
-wird ausgeführt, sobald man wieder einen Eintrag mit einem höheren toc-Level
-findet. In der Zwischenzeit werden alle Einträge für dieses Level gesetzt, indem
-zuerst der \meta{prefix}-Code und dann der \meta{contents}-Code ausgeführt wird.
-
-Die (robusten) Befehle \csb{etocname}, \csb{etocnumber} und \csb{etocpage} sind
-für die Benutzung innerhalb der \meta{prefix} und \meta{contents}-Teile aus der
-\csa{etocsetstyle}-Spezifikation. Diese enthalten den Namen, die Nummerierung
-und die Seitennummer des entsprechenden toc-Eintrags. Ist das Paket |hyperref|
-im Dokument eingebunden, und es existieren Verlinkungen zu den TOC-Daten, dann
-werden diese Links in den Befehlen \csa{etocname}, \csa{etocnumber} und
-\csa{etocpage} gehalten (Der letzte hat nur einen Link, wenn |hyperref| die
-Option \emph{linktoc=all} übergeben wurde).
-
-
-
-\subsection{Die \csbhyp{etocskipfirstprefix} und \csbhyp{etociffirst} Befehle}
-\label{etocskipfirstprefix}
-\label{etociffirst}
-\label{etocxiffirst}
-
-% ALTES
-% Der gewählte |subsubsection|-Stil benutzt außerdem den Befehl
-% \csb{etocskipfirstprefix}, welcher -- falls verwendet -- der letzte im
-% \emph{start}-Code sein \emph{muss}. Er sorgt dafür, dass der "`prefix"'-Code
-% nicht für das erste Objekt ausgeführt wird.
-
-\textbf{UEBERSETZUNG NOETIG}
-
-\begin{otherlanguage}{english}
-The chosen |subsubsection| style made use of the command
-\csb{etocskipfirstprefix}, which instructs \etoc to \emph{not} use
-for the first item the specified \meta{prefix} code.\footnote{With
-versions earlier than |1.08| it had to be the very last token in
-the \meta{start} code. It may now appear anywhere therein.}
-
-The command \csb{etociffirst}\marg{YES CODE}\marg{NO CODE} (new
-with |1.08|) is a more flexible way to customize the \meta{prefix}
-(and \meta{contents}) specifications. It executes the \meta{YES
-CODE} branch if this is the first unit at that level (inside a
-lower level) and the \meta{NO CODE} if not. This is a robust
-command which survives to expansion (for example in an |enumitem| label).
-
-The variant \csb{etocxiffirst} does the same, but is expandable.
-\end{otherlanguage}
-
-
-\subsection{Der \csbhyp{etocnumber}-Befehl}
-\label{etocnumber}
-
-Bis hierhin würde unsere Spezifikation die Nummerierung verwenden, die von der
-|enumerate|-Umgebung generiert wird, jedoch möchten wir natürlich die in
-der |.toc|-Datei deklarierten Nummern benutzen. Das kann man mit Hilfe des
-\csb{etocnumber}-Befehls erreichen. Um die Bezeichnungen in die
-|enumerate|-Auflistung zu bekommen, fährt man mit der Syntax
-{\ttfamily label=\char32} des |enumitem|-Pakets fort:
-\begin{verbatim}
-\etocsetstyle{section}
-{\begin{enumerate}[label=\etocnumber]}
-{\normalsize\bfseries\rmfamily\item}
-{\etocname{} (page \etocpage)}
-{\end{enumerate}}
-\end{verbatim}
-Lieber als nur \csa{etocnumber} haben wir dann so etwas wie |\fbox{\etocnumber}|
-benutzt. Dabei ist festzuhalten, dass \csa{etocnumber} ein robuster Befehl ist,
-was erklärt, warum er in der Label-Spezifikation benutzt werden kann, ohne
-|\protect| hinzuzufügen.
-
-\subsubsection{Der \csbhyp{etocifnumbered}-Schalter}
-\label{etocifnumbered}
-\label{etocxifnumbered}
-
-Die \csa{fbox} würde ein unästhetisches Ergebnis bringen im Fall eines nicht
-nummerierten Abschnitts (welches beispielsweise im Inhaltsverzeichnis gelandet
-ist mittels eines \csa{addcontentsline} Befehls).\footnote{Wie man sieht, wird
-\csa{fcolorbox} verwendet wird statt \csa{fbox}. Aufgrund einer Neudefinition --
-durchgeführt vom |xcolor|-Paket-- haben wir \csa{fbox} verwendet (und nicht
-|hyperref|), sonst hätten wir \csa{protect}\csa{fbox} benötigt.}
-
-Der \csb{etocifnumbered}\marg{A}\marg{B}-Befehl führt \meta{A} aus, wenn die
-Nummer existiert, und \meta{B} falls nicht. Also benutzen wir es in dem Code,
-welcher letztendlich für das |section|-Level gewählt wurde:
-\begin{verbatim}
-\etocsetstyle{section}
-{\begin{enumerate}[leftmargin=.75cm, label=\etocifnumbered
- {{\fboxrule1pt\fcolorbox{green}{white}{\etocnumber}}}{}]}
-{\normalsize\bfseries\rmfamily\item}
-{\etocname{} (page \etocpage)}
-{\end{enumerate}}
-
-\etocsetstyle{subsection}
-{\begin{enumerate}[leftmargin=0cm, label=\etocnumber]}
-{\normalfont \item}
-{\etocname{} (p.~\etocpage)}
-{\end{enumerate}}
-\end{verbatim}
-
-Wenn wir nur das |section|-Level geändert hätten und nicht das
-|subsection|-Level, dann wäre ein Kompilierfehler aufgetreten, denn der
-Paket-Stil für die "`subsections"' erwartet dann `im Vertikal-Modus' zu starten.
-Ein zusätzliches \csa{par}-Token im \meta{contents}-Teil des |section|-Levels
-hätte das behoben: |{...(page \etocpage)\par}|.
-
-\textbf{UEBERSETZUNG NOETIG}
-
-\begin{otherlanguage}{english}
-The command \csb{etocifnumbered} is robust; \csb{etocxifnumbered}
-(new with |1.08|) has the same effect but is expandable.
-\end{otherlanguage}
-
-\subsection{Die Befehle \csbhyp{etocthename}, \csbhyp{etocthenumber} sowie
-\csbhyp{etocthepage}}
-\label{etocthename}
-\label{etocthenumber}
-\label{etocthepage}
-
-Es ist manchmal wünschenswert, Zugriff auf Name, Nummer und Seitenzahl zu haben,
-ohne die hyperref-Daten: Ähnlich wie die *-Variante des \csa{ref}-Befehls, wenn
-das |hyperref|-Paket verwendet wird. Beispielsweise könnte man den Wunsch haben,
-eine Einheit oder Seitenzahl in einer Art numerischem Kontext verwenden zu
-wollen oder seine Formatierung zu ändern. Diese Funktionalität wird von
-\csb{etocthename}, \csb{etocthenumber} und \csb{etocthepage} bereitgestellt.
-
-Diese Befehle sind aber nicht geschützt, also sollten sie in veränderlichen
-Kontexten (zum Beispiel Label-Beschreibungen mit vorangestelltem |\protect|)
-verwendet werden.
-
-
-\subsection{Der \csbhyp{etoclink}-Befehl}
-\label{etoclink}
-
-Der Befehl \csb{etoclink}\marg{linkname} kann in Linienstil-Beschreibungen
-benutzt werden, in ähnlicher Art und Weise wie die argumentlosen Befehle
-\csa{etocname}, \csa{etocnumber} und \csa{etocpage}. Er erzeugt einen Link
-(falls solch ein von |hyperref| zur |.toc|-Datei hinzugefügt wurde), dessen Ziel
-der entsprechende Dokumentteil ist und dessen Name das angegebene Argument ist.
-Daher ist |\etoclink{\eotcthename}| das ursprüngliche |\etocname|. Es ist darauf
-zu achten, dass wenn |hyperref| nicht damit beauftragt wurde, die Seitenzahl mit
-einem Link zu versehen (mittels seiner Option \emph{linktoc=all}), dann hat
-\etoc's \csa{etocpage} auch keinen Link, |\etoclink{\etocthepage}| allerdings
-schon.
-
-Der Befehl \csa{etoclink} ist robust.
-
-\subsection{Die Befehle \csbhyp{etocthelinkedname}, \csbhyp{etocthelinkednumber},
-\csbhyp{etocthelinkedpage} und \csbhyp{etocthelink}}
-\label{etocthelinkedname}
-\label{etocthelinkednumber}
-\label{etocthelinkedpage}
-\label{etocthelink}
-
-Das Folgende ist für fortgeschrittene Anwendungen von fortgeschrittenen
-Benutzern. Das \csa{etocthename}-Makro wurde bereits schon einmal erwähnt;
-verwendet man es in Anweisungen wie |\global\let\lastone\etocthename| in einem
-\etoc line-Stil, definiert das Macro |\lastone| so, dass es sich ausbreitet bis
-zum letzten Namen auf dem korrespondieren Level. Jedoch bestand bisher keine
-Möglichkeit, dass Gleiche auch für die Link-Daten zu tun.
-
-Das in diesem Paket enthaltene \csa{etocthelinkedname} stellt dies nun zur
-Verfügung, inklusive der Link-Daten. Es wurde in dieser Dokumentation benutzt
-bei Erstellung der \hyperref[tocastree]{Beispiele mit Bäumen}.
-
-Ebenfalls bereit gestellt mit ähnlichen Funktionen: \csa{etocthelinkednumber},
-\csa{etocthelinkedpage} (welches nur einen Link enthält, wenn |hyperref| einen
-zu dieser Seitenzahl hinzugefügt hat) und \csa{etocthelink}\marg{linkname},
-welches es erlaubt einen Link mit einem beliebigen Name zu erstellen.
-
-All diese Befehle sind \emph{nicht} robust.
-
-Beispiel\begingroup\
- \etocsetstyle {section}
- {\begin{itemize*}[itemjoin={{; }}, itemjoin*={{, und }}]}
- {\global\let\TmpEtocNumber\etocthelinkednumber
- \global\let\TmpEtocName\etocthelinkedname
- \global\let\TmpEtocPage\etocthelinkedpage }
- {\item [{\bfseries\TmpEtocNumber.}]\TmpEtocName\
- (\emph{S. \TmpEtocPage})}
- {\end{itemize*}.}%
- \etocsetnexttocdepth {section}%
- \etocsettocstyle {(ein Inhaltsverzeichnis als eine Inline-%
- \texttt{enumitem}-Umgebung): }{}%
- \etocinline\tableofcontents \ref{toc:globalcmds}
-\endgroup
-
-\begin{verbatim}
-Beispiel\begingroup
- \etocsetstyle {section}
- {\begin{itemize*}[itemjoin={{; }}, itemjoin*={{, und }}]}
- {\global\let\TmpEtocNumber\etocthelinkednumber
- \global\let\TmpEtocName\etocthelinkedname
- \global\let\TmpEtocPage\etocthelinkedpage }
-% Obiges ist erforderlich, da \item, hier in itemize*, eine Gruppe schließt.
- {\item [{\bfseries\TmpEtocNumber.}]\TmpEtocName\
- (\emph{S. \TmpEtocPage})}
- {\end{itemize*}.}%
- \etocsetnexttocdepth {section}%
- \etocsettocstyle {(ein Inhaltsverzeichnis als eine Inline-%
- \texttt{enumitem}-Umgebung): }{}%
- \etocinline\tableofcontents \ref{toc:globalcmds}
-\endgroup
-\end{verbatim}
-
-Mit \etoc |1.08| gibt es ein einfacher Weg zum gleichen Resultat:
-\begin{verbatim}
-Beispiel\begingroup\etocglobaldefs % <-- NEU mit etoc 1.08.
- \etocsetstyle {section}
- {\begin{itemize*}[itemjoin={{; }}, itemjoin*={{, und }}]}
- {}
- {\item [{\bfseries\etocthelinkednumber.}]
- \etocthelinkedname\ (\emph{S. \etocthelinkedpage })}
- {\end{itemize*}.}%
- \etocsetnexttocdepth {section}%
- \etocsettocstyle {(ein Inhaltsverzeichnis als eine Inline-%
- \texttt{enumitem}-Umgebung): }{}%
- \etocinline\tableofcontents \ref{toc:globalcmds}
-\endgroup
-\end{verbatim}
-Beispiel\begingroup\etocglobaldefs % <-- NEU mit etoc 1.08.
- \etocsetstyle {section}
- {\begin{itemize*}[itemjoin={{; }}, itemjoin*={{, und }}]}
- {}
- {\item [{\bfseries\etocthelinkednumber.}]
- \etocthelinkedname\ (\emph{S. \etocthelinkedpage })}
- {\end{itemize*}.}%
- \etocsetnexttocdepth {section}%
- \etocsettocstyle {(ein Inhaltsverzeichnis als eine Inline-%
- \texttt{enumitem}-Umgebung): }{}%
- \etocinline\tableofcontents \ref{toc:globalcmds}
-\endgroup
-
-\section{Der \csbhyp{etocsetlevel}-Befehl}
-\label{etocsetlevel}
-
-Wie bereits in \autoref{part:surprising} erklärt, kann man \etoc mitteilen,
-welches Level er mit einem bestimmten Abschnitts-Befehl assoziieren soll,
-nämlich mit \csa{etocsetlevel}. Zum Beispiel:
-
-\begin{verbatim}
-\etocsetlevel{cell}{0}
-\etocsetlevel{molecule}{1}
-\etocsetlevel{atom}{2}
-\etocsetlevel{nucleus}{3}
-\end{verbatim}
-Im Kompatibilitäts-Modus wird davon ausgegangen, dass die Makros |\l@cell|,
-\texttt{\textbackslash l@mo\-le\-cule}, \ldots\ entweder durch
-den Benutzer oder von einer anderen Klasse definiert wurden: Nur |\etocsetlevel|
-ist nicht genug, um auf dem korrespondierenden Pegel "`out-of-the-box"' zu
-arbeiten.
-
-Jedoch, ist im Kompatibilitätsmodus kein Inhaltsverzeichnis gesetzt, dann ist
-nur wichtig, dass die verschiedenen Linienstile gesetzt sind.
-Wenn beispielsweise |section| auf Level |1| ist, dann muss man nicht mehr
-\csa{etocsetstyle}|{molecule}{..}{..}{..}{..}| nach
-\csa{etocsetstyle}|{molecule}{1}| aufrufen, da
-\csa{etocsetstyle}|{section}{..}{..}{..}{..}| bereits
-wirksam ist (und es wurde im Paket selbst in der Definition seines
-Linienstils gesetzt).
-
-Die akzeptierten Level laufen von |-2| bis einschließlich |6|. Alles andere wird
-auf |6| abgebildet, welches ein Dummy-Level ist und nie dargestellt wird. Das
-Paket tut Folgendes:
-\begin{verbatim}
-\etocsetlevel{book}{-2}
-\etocsetlevel{part}{-1}
-\etocsetlevel{chapter}{0}
-\etocsetlevel{section}{1}
-\etocsetlevel{subsection}{2}
-\etocsetlevel{subsubsection}{3}
-\etocsetlevel{paragraph}{4}
-\etocsetlevel{subparagraph}{5}
-\end{verbatim}
-Die benutzerdefinierten Stile von \etoc werden von \csa{etocdefaultlines}
-aktiviert. Sie werden vom Haupt-Inhaltsverzeichnis dieses Dokuments dargestellt.
-Die Level-Zuweisungen können jederzeit modifiziert werden: In
-\autoref{part:surprising} sieht man verschiedene Anwendungen dieser Technik.
-
-Als ein weiteres Beispiel soll hier angeführt werden, wie das
-\hyperref[toc:main]{Haupt-Inhaltsverzeichnis} dieses Dokuments gesetzt
-wurde, nämlich mit den folgenden Instruktionen:
-\begin{verbatim}
-\etocsettocdepth {subsubsection} % set the initial tocdepth
-\etocdefaultlines % use the package default line styles. At this early stage in
- % the document they had not yet been modified by \etocsetstyle
- % commands, so \etoctoclines could have been used, too.
-\etocmarkboth\contentsname
-\etocmulticolstyle[1] % one-column display
- {\pdfbookmark[1]{Table of contents}{MAINTOC}% create a bookmark in the pdf
- \noindent\bfseries\Large
- \leaders\hrule height1pt\hfill
- \MakeUppercase{Table of Contents}}
-\begingroup % use a group to limit the scope of the
- \etocsetlevel{subsection}{3} % subsection level change.
- \etocsetlevel{subsubsection}{4} % anything > tocdepth=3.
- \tableofcontents \label{toc:main}
-\endgroup
-\end{verbatim}
-Auf diese Art und Weise benutzen die "`subsections"' die Stile, die ursprünglich
-für "`subsubsections"' vorgesehen waren, während diese gar nicht gedruckt
-werden. Ohne diese Modifikation wäre das Erscheinungsbild ein anderes gewesen:
-die Paketlinienstile sind dafür gedacht gewesen, in Dokumenten mit vielen vielen
-"`subsubsections"' verarbeitet zu werden, in einem Zwei-Spalten-Layout, um
-diesen ein kompakteres Ergebnis zu liefern als die
-Standard-\LaTeX-Inhaltsverzeichnisse. Hier haben wir jedoch noch ein paar
-"`subsubsections"', daher ist es interessanter, diese zu ignorieren und dafür
-"`sections"` und "`subsections"' visuell unterschiedlich zu drucken.
-
-\section{Umfang der zur \texorpdfstring{\texttt{.toc}}{.toc}-Datei gehörigen Befehle}
-
-\begingroup % pour \small et \MacroFont en particulier.
-\small
-
-\subsection{Testen des Bereichs}
-
-Lasst uns zur Farbe Rot wechseln und außerdem diesen Befehl zur
-|.toc|-Datei hinzufügen:
-
-\color{red!50}
-\addtocontents{toc}{\string\color{red!50}}
-
-\def\MacroFont{\ttfamily \footnotesize\hyphenchar\font45 }
-\begin{verbatim}
- \color{red!50} % Ändern der Textfarbe
- \addtocontents{toc}{\string\color{red!50}} % das Gleiche in der .toc-Datei
-\end{verbatim}
-
-
-\subsection{Dies ist eine (blass)rote Subsection zu Demonstrationszwecken}
-
-Gut, der Titel hier wurde schwarz dargestellt, was daran liegt, wie die
-|scrartcl|-Klasse funktioniert (in der |article|-Klasse wäre er rot gewesen),
-aber wir sind ohnehin mehr daran interessiert, wie er im Inhaltsverzeichnis
-aussieht: Und tatsächlich ist er rot im
-\hyperref[toc:main]{Haupt-Inhaltsverzeichnis} dieses Dokuments, genau so wie im
-\hyperref[toc:a]{Inhaltsverzeichnis für diesen Abschnitt}. Beide Befehle
-gehorchen wie erwartet dem |\color{red!50}|-Befehl, der in die |.toc|-Datei
-geschrieben wurde.
-
-Aber lasst uns jetzt diese "`subsection"' beenden und eine "`section"' starten.
-
-\section{Bin ich auch rot?}
-
-Die Frage ist, ob es im Inhaltsverzeichnis erscheint: Die Antwort ist ja, es ist
-rot im \hyperref[toc:main]{Haupt-Inhaltsverzeichnis} und nein es ist nicht rot
-im \hyperref[toc:a]{Inhaltsverzeichnis für diesen Abschnitt}. Grund dafür ist,
-dass der \meta{finish}-Code für dieses "`subsection"'-Level eine Gruppe
-geschlossen hat, da es |\end{enumerate}| verwendet hat.
-
-Das zeigt noch einmal die Diskussion aus \autoref{ssec:limitations}.
-
-Die standardmäßigen Paket-line-Stile beinhalten keine Gruppen-Öffnung- und
-Schliess-Befehle: Die Gültigkeit eines Befehls in der |.toc|-Datei wird also
-solange bestehen, bis er explizit durch einen weiteren Befehl wieder rückgängig
-gemacht wird.
-
-\begin{verbatim}
- \normalcolor
- \addtocontents{toc}{\string\normalcolor}
-\end{verbatim}
-\endgroup
-
-\normalcolor
-\addtocontents{toc}{\string\normalcolor}
-
-Zurück zu Schwarz. Man beachte das diese Bereichsprobleme auch in mehrsprachigen
-Dokumenten auftauchen, da das |babel|-Paket auftretende Sprachänderungen
-ebenfalls in die |.toc|-Datei schreibt.
-
-
-\clearpage
-\etocdepthtag.toc {globalcmds}
-
-\part{Befehle für den toc-Display-Stil}
-\label{part:globalcmds}
-
-\thispartstats
-
-\etocsettocstyle{}{}
-\etocstandardlines
-\localtableofcontents \label{toc:globalcmds}
-
-
-\section{Festlegung des toc-Display-Stils}
-
-
-Der \emph{toc display}-Stil gibt an, ob das Inhaltsverzeichnis mit mehreren
-Spalten erscheint oder nur mit einer, ob der Titel gesetzt ist wie in der
-|article|- oder |book|-Klasse, oder ob er über den Einträgen zentriert sein
-soll, mit Regeln an der Seite, oder ob das gesamte Inhaltsverzeichnis in einen
-Rahmen gepackt werden soll. Entscheidet man sich bspw. für eine einheitliche
-Überschrift und ein Ein-Spalten-Layout, so verwendet man dafür folgende Befehle:
-\begin{verbatim}
-\etocruledstyle[1]{Title} \tableofcontents (or \localtableofcontents)
-shortcuts: \etocruled[1]{Title} (or \etoclocalruled[1]{Title})
-\end{verbatim}
-
-\subsection{Der Befehl \csbhyp{etocsettocstyle}}
-\label{etocsettocstyle}
-
-Dies ist ein Befehl mit zwei notwendigen Argumenten:
-%
-\centeredline{\csb{etocsettocstyle}\marg{before\_toc}\marg{after\_toc}}
-%
-Der \marg{before\_toc}-Teil ist verantwortlich für den Schriftsatz der
-Überschriften, so kann er beispielsweise etwas sein wie
-\starit{section}|{\contentsname}|.
-
-Generell gesprochen, sollte diese Überschrift \TeX{} im "`Vertikal-Modus"'
-lassen, wenn der eigentliche Schriftsatz des Inhalts beginnt: die Linienstile
-(entweder von den Standardklassen oder den Paketlinenstilen) erwarten alle im
-`Vertikal-Modus' zu starten.
-
-Das erste Argument von \csb{etocsettocstyle} kann auch Instruktionen beinhalten,
-um die Seitenüberschriften zu markieren. Oder es kann prüfen (|book|-Klasse), ob
-der Zwei-Spalten-Modus eingeschaltet ist, um dann zum Ein-Spalten-Modus zu
-wechseln. Der \meta{after\_toc}-Teil würde dann wieder den Ein-Spalten-Modus
-aktivieren.
-
-Die im Folgenden beschriebenen Befehle \csb{etocmulticolstyle},
-\csb{etocruledstyle} und \csb{etocframedstyle} rufen alle \csa{etocsettocstyle}
-als Subroutine auf, um eine \texttt{Mehr\-spalten}-Umgebung mit Hilfe von
-\marg{before\_toc} zu starten, welche mit \marg{after\_toc} wieder geschlossen
-wird.
-
-\subsection{Die Befehle \csbhyp{etocmulticolstyle}, \csbhyp{etocmulticol} und
-\csbhyp{etoclocalmulticol}}
-\label{etocmulticolstyle}
-\label{etocmulticol}
-\label{etoclocalmulticol}
-
-Dies ist ein Befehl mit einem optionalen und einem notwendigen Argument:
-%
-\centeredline{\csb{etocmulticolstyle}\oarg{number\_of\_columns}\marg{heading}}
-%
-Die
-\oarg{number\_of\_coloumns} können von 1 bis 10 gehen (default: 2; ist der Wert
-1, so wird natürlich keine |multicols|-Umgebung angelegt). Das \meta{heading}
-wird typischerweise `vertikaler' Art sein, also wie: \meta{heading} =
-|\section*|\marg{title}, aber man kann auch horizontale Dinge realisieren wie
-|\fbox{Hallo Welt}| (\etoc fügt automatisch ein |\par| ans Ende des
-"`heading"'-Arguments von \csb{etocmulticolstyle}). Hier ist einmal exemplarisch
-dargestellt, wie das Haupt-Inhaltsverzeichnis dieses Dokuments konfiguriert
-wurde:
-\begin{verbatim}
-\etocmulticolstyle{\noindent\bfseries\Large
- \leaders\hrule height1pt\hfill
- \MakeUppercase{Table of Contents}}
-\end{verbatim}
-Nach \csa{etocmulticolstyle} haben alle zukünftigen \csa{tableofcontents} den
-spezifizierten Stil, falls es zwischendurch nicht mehr geändert wird. Eine
-kürzere Variante für nur ein Inhaltsverzeichnis ohne Einfluss auf spätere ist:
-\centeredline{\csa{etocmulticol}\oarg{number\_of\_columns}\marg{heading}} oder
-\centeredline{\csa{etoclocalmulticol}\oarg{number\_of\_columns}\marg{heading}.}
-
-\subsubsection{Der Befehl \csbhyp{etoctocstyle}}
-\label{etoctocstyle}
-
-\centeredline{\csb{etoctocstyle}\oarg{kind}%
-\marg{number\_of\_columns}\marg{title}}
-\centeredline{=\csb{etocmulticolstyle}|[|{\itshape number\_of\_columns}|]|%
-|{\kind*{|\itshape title\upshape|}}|}
-Wobei |Typ| gewählt wird aus |chapter|, |section| usw. Standardwert ist
-|chapter| oder |section|, abhängig von der Dokumentklasse.
-
-\paragraph{\texorpdfstring{\csbhyp{etoc\-toc\-style\-with\-marks}}{etoctocstylewithmarks}}%
-\leavevmode\unskip{\color{blue}\oarg{kind}\marg{number\_of\_columns}\marg{title}\marg{mark}}
-\label{etoctocstylewithmarks}
-\label{etoctocstylewithmarksnouc}
-
-\centeredline
-{=\csb{etocmulticolstyle}|[|{\itshape number\_of\_columns}|]|%
-|{\kind*{|\itshape title \ttfamily\upshape\string\markboth%
-|{\MakeUppercase{|{\rmfamily\itshape mark}|}}}}|}
-Wobei |Typ| gewählt wird aus |chapter|, |section| usw. Die wirkliche Anzeige der
-Markierungen ("`marks"') hängt vom Seitenstil ab. Es gibt die Variante
-\csb{etoctocstylewithmarksnouc}, welche Großschreibung unterdrückt.
-
-\paragraph{Möchten wir wirklich pargraph-Einträge im Inhaltsverzeichnis?}
-
-\paragraph{Wirklich?}
-
-\subsection{Die Befehle \csbhyp{etocruledstyle}, \csbhyp{etocruled} und
- \csbhyp{etoclocal\-ruled}}
-\label{etocruledstyle}
-\label{etocruled}
-\label{etoclocalruled}
-
-Das generelle Format von \csa{etocruledstyle} ist:
-\centeredline{\csb{etocruledstyle}%
- \oarg{number of columns}\marg{title of the toc}}
-\noindent
-Der Titel ist horizontales Material (der |LR|-Modus von \emph{\LaTeX{}, ein
-Dokument-Vorbereitung-System,}): wenn es nicht in eine Zeile passt, dann sollte
-es in eine \csa{parbox} mit einer gegebenen Weite geschrieben werden. Der grüne
-Rahmen für die Überschrift des Inhaltsverzeichnisses zu \hyperref[toc:a]{Beginn
-des zweiten Teils dieses Dokuments} wurde erzeugt durch:
-\begin{verbatim}
-\etocruledstyle[1]{\etocfontminusone\color{green}%
- \fboxrule1pt\fboxsep1ex
- \framebox[\linewidth]
- {\normalcolor\hss Contents of this part\hss}}
-\end{verbatim}
-
-Eine kürzerer Weg den Stil zu setzen mit \csb{etocruledstyle} und dann einen
-\csa{tableofcontents} zu erstellen, alles zusammen in einer Gruppe damit
-zukünftige Inhaltsverzeichnisse nicht betroffen sind, ist:
-\centeredline{\csb{etocruled}\oarg{number\_of\_columns}\marg{title}}
-
-\subsection{Die Befehle \csbhyp{etocframedstyle}, \csbhyp{etocframed}
-und \csbhyp{etoclocal\-framed}}
-\label{etocframedstyle}
-\label{etocframed}
-\label{etoclocalframed}
-
-Die gleiche Arbeitsweise:
-%
-\centeredline{\csb{etocframedstyle}\oarg{number\_of\_columns}\marg{title}}
-und die passende Abkürzung:
-%
-\centeredline{\csb{etocframed}\oarg{number\_of\_columns}\marg{title}}
-Diese wird
-verwendet, wenn man nicht den Stil zukünftiger Inhaltsverzeichnisse modifizieren
-will (eine ändere Möglichkeit wäre es, das Ganze in Klammern zu packen oder
-innerhalb eines |\begingroup...\endgroup|; es gibt auch noch einen
-\csa{etoclocalframed} für ein lokales Inhaltsverzeichnis).
-
-Das gesamte Inhaltsverzeichnis ist eingerahmt. Der Titel selbst aber nicht:
-Möchte man das erreichen, dann muss man das im \meta{title}-Argument mit
-\csa{etocframedstyle} oder \csa{etocframed} festhalten. Die Farben für den
-Hintergrund und der anderen Komponenten (oben, links, rechts, unten) des Rahmens
-sind festgelegt mittels geeigneter |\renewcommand|'s (siehe
-\autoref{ssec:customdisplay}).
-
-Eine |minipage| wird benutzt, von daher ist das produzierte Inhalsverzeichnis
-nicht kompatibel mit Seitenumbrüchen. Um diese zu erlauben, wird empfohlen, die
-Befehle
-\href{http://ctan.org/pkg/mdframed}{mdframed}\footnote{\url{http://ctan.org/pkg/mdframed}}
-oder
-\href{http://ctan.org/pkg/tcolorbox}{tcolorbox}\footnote{\url{http://ctan.org/pkg/tcolorbox}}
-in den Argumenten von \csb{etocsettocstyle} zu verwenden.
-
-Beispiele in diesem Dokument findet man auf den Seiten \pageref{toc:d},
-\pageref{toc:floating}, \pageref{toc:b} und \pageref{toc:clone}.
-
-\subsection{Überschriften, Titel, \csbhyp{etocoldpar}, \csbhyp{etocinnertopsep}}
-\label{etocinnertopsep}
-\label{etocoldpar}
-
-Das für \csb{etocmulticolstyle} notwendige \meta{heading}-Argument kann entweder
-Vertikal-Modus-Material sein wie |\section*{\emph{Inhaltsverzeichnis}}| oder die
-horizontale Variante wie das einfache |\etocmulticolstyle{Hallo Welt}|.
-
-Es kann kein explizites |\par| oder eine Leerzeile in das notwendige Argument
-von \csb{etocmulticolstyle} eingefügt werden, aber \etoc stellt \csb{etocoldpar}
-als Ersatz bereit: Es fügt |\let\etocoldpar\par| vor der |multicols|-Umgebung
-ein und eben dieses |\etocoldpar|\footnote{Dieser Befehl \csa{etocoldpar} (=
-funktionierendes \csa{par} im Argument von \csa{etocmulticolstyle}) ist nicht
-verwandt mit dem Schalter \csb{etocinline}, dessen Zweck es ist \etoc
-mitzuteilen, kein \csa{par} vor dem Inhaltsverzeichnis auszuführen.} am Ende der
-Überschrift ein, und macht dann noch einen vertikalen Sprung der Größe
-\csa{etocinnertopsep}.
-
-Auf der anderen Seite erwarten die Befehle \csb{etocruledstyle} und
-\csb{etocframedstyle} ein Argument im "`LR-Modus"' (um die Terminologie von
-\emph{\LaTeX, a document preparation system} zu nutzen). Das bedeutet, dass
-mehrzeilige Titel nur möglich sind, wenn man sie in etwas wie eine \csa{parbox}
-einschließt.
-
-Eine wichtige Größe verwendet von sowohl \csb{etocmulticolstyle},
-\csb{etocruledstyle} als auch \csb{etocframedstyle} ist \csb{etocinnertopsep}.
-Es gibt an, wieviel Platz zwischen den Überschriften und dem Start des Inhalts
-liegen soll. Der Default-Wert ist |2ex| und man kann es mittels
-|\renewcommand*{\etocinnertopsep}|\marg{neuer\_Wert} ändern, nicht mit
-|\setlength|.
-
-\subsection{Der Kompatibilitätsmodus \csbhyp{etocstandarddisplaystyle}}
-\label{etocstandarddisplaystyle}
-
-\etoc wird dann das emulieren, für was eigentlich die Dokument-Klasse
-verantwortlich ist, in Bezug auf den globalen Display-Stil des
-Inhaltsverzeichnisses. Allen Änderung von innerhalb der Klasse sollten
-berücksichtigt werden.
-
-\subsection{Der Befehl \csbhyp{etoc\-inline}}
-\label{etocinline}
-\label{etocnopar}
-\label{etocdisplay}
-
-Mit \csb{etocinline} oder seinem Synonym |\etocnopar|, von dem
-|\tableofcontents|-Befehl und seinen Varianten werden \emph{nicht} zuerst ein
-|\par| erstellt, um den vorherigen |paragraph| zu schließen. Von daher kann man
-das Inhaltsverzeichnis in einem Inline-Stil darstellen; oder, wenn nur gebraucht
-um eine Token-Liste bzw. ein Makro vorzubereiten, wird es bei der Ausführung
-nichts im Token-Stream hinterlassen.
-
-% JFBU:
-Mit \csb{etocdisplay} werden (nochmal) von dem |\tableofcontents|-Befehl und
-seinen Varianten zuerst ein |\par| erstellt.
-
-\section{Gesternde Varianten des \csbhyp{tableofcontents} etc. Befehls}
-\label{tableofcontents*}
-\label{localtableofcontents*}
-\label{etocbeforetitlehook}
-\label{etocaftertitlehook}
-\label{etocaftercontentshook}
-\label{etocmemoirtoctotocfmt}
-
-Die Befehle \toc, \localtoc, \csa{etocmulticol} und all ihre Cousins und
-Varianten haben Stern-Varianten (der Stern muss vor den anderen Argumenten
-kommen). Für alle Klassen außer |memoir| verhalten diese sich wie die Originale.
-Für |memoir| jedoch, schreibt das Original einen Eintrag in die |.toc|-Datei,
-genau so wie die Verwendung des echten \toc Befehls in dieser Klasse, während
-aber die Stern-Variante genau das nicht tut, wie es in |memoir| die Regel ist.
-
-Sobald man damit beginnt, lokale Inhaltsverzeichnisse zu benutzen merkt man,
-dass der |memoir|-Standard, welcher dazu gedacht ist, einen |chapter|-Eintrag
-für jedes Inhaltsverzeichnis zu erzeugen, nicht praktisch ist. Der Befehl
-\csb{etocmemoirtoctotocfmt}\marg{Typ}\allowbreak\marg{name} ändert das Format
-(\meta{Typ} ist wieder |chapter|, |section|, |subsection| etc. und \meta{name}
-kann bspw. \csa{contentsname} sein.) Die Standardwerte für diese Größen sind
-|chapter| und |\contentsname|.
-
-Das Format der tatsächlichen Überschrift des Inhaltsverzeichnisses sollte
-ebenfalls ordnungsgemäß gesetzt werden (z.\,B. mit \csa{etoctocstyle}), um
-einfach die selbe Einheitsgröße zu nutzen wie im ersten Argument von
-\csa{etocmemoirtoctotocfmt}.
-
-Eine ungewöhnliche Situation tritt auf, wenn man zwei aufeinanderfolgende
-\csa{localtableofcontents} hat (offensichtlich ist das eine nicht sehr
-wahrscheinliche Situation), direkt nach einem \csa{part} zum Beispiel. Der erste
-würde dann eine Kapitelüberschrift erzeugen (wenn der Standard nicht geändert
-wurde, wie oben angedeutet), welche in die |.toc|-Datei geschrieben werden
-würde. Das zweite Inhaltsverzeichnis denkt dann, es ist ein lokales zu diesem
-Kapitel gehörig und würde aus diesem Grund nichts darstellen. Die Lösung für
-dieses Problem ist es, das zweite als Klon des ersten zu definieren.
-
-Unabhängig von der Situation hat man bei der |memoir|-Klasse immer ein
-Hook-Makro namens \csb{etocaftertitlehook}, welches man unterdrückt, indem man
-die Stern-Varianten der Darstellungsbefehle nutzt. Außer für die |memoir|-Klasse
-ist dieser Hook dazu gedacht, überhaupt nichts zu tun.
-
-Außerdem gibt es noch \csb{etocaftercontentshook}, ähnlich definiert, um
-nichts zu tun. Es gibt auch \csb{etocbeforetitlehook}: es ist definiert
-um nichts zu tun. Beide können für einige spezielle Effekte genutzt
-werden.
-
-
-\section{Das In\-halts\-ver\-zeic\-hnis von die\-sem Teil}
-
-\subsection{Über\-prü\-fen des Kom\-pa\-tibilitäts\-modus}
-
-Als drittes Beispiel wollen wir nun das Inhaltsverzeichnis dieses Teils setzen.
-Dazu wollen wir zuerst den Kompatibilitätsmodus testen.\footnote{Dieses
-Dokument wurde als |scrartcl| gesetzt. Wir wollen nun testen, ob
-der Kompatibilitätsmodus des \etoc-Pakets die Anpassungen innerhalb der
-Klassenbefehle umsetzt.} Das ursprüngliche Inhaltsverzeichnis ist
-unsichtbar und wurde am Anfang von \autoref{part:globalcmds} definiert,
-wobei es mit einem Label versehen wurde.
-\begin{verbatim}
-\KOMAoptions{toc=left}
-\etocstandarddisplaystyle % wird benötigt, damit toc=left gilt
-\etocstandardlines
-\tableofcontents \ref{toc:globalcmds}
-\end{verbatim}
-\KOMAoptions{toc=left}
-\etocstandarddisplaystyle
-\etocstandardlines
-\tableofcontents \ref{toc:globalcmds}
-
-\subsection{Ein In\-halts\-ver\-zeich\-nis mit Rahmen}
-
-Als nächstes wollen wir ein gerahmtes Inhaltsverzeichnis erzeugen, wobei wir den
-vom Paket vorgegebenen Linienstil nutzen und ein paar Farben hinzufügen wollen.
-(Es wurde in eine Float-Umgebung eingefügt, die man \vpageref{toc:b}
-findet.)\footnote{Innerhalb der |figure|-Umgebung und vor dem gerahmten
-Inhaltsverzeichnis, welches die Option |multicols| nutzt, haben wir den Befehl
-\csa{normalcolor} eingefügt, um einen Bug zu umgehen, der durch die Interaktion
-zwischen |multicols|, |color| und der |figure|-Umgebung entsteht. (Wir brauchen
-den Befehl \csa{color\{red\}} in der |.toc|-Datei.) Der Fehler wird nicht durch
-das \etoc-Paket verursacht.}
-
-\begin{verbatim}
-\etocdefaultlines
-\begingroup
-\renewcommand{\etoccolumnsep}{2em}
-\renewcommand{\etocinnerleftsep}{1.5em}
-\renewcommand{\etocinnerrightsep}{1.5em}
-% Befehle für die Hintergrundfarbe des Inhaltsverzeichnisses
-\renewcommand{\etocbkgcolorcmd}{\color{yellow!10}}
-% Befehle für die Rechtecke vor und nach dem Inhalt des Verzeichnisses
-\renewcommand{\etoctoprule}{\hrule height 1pt}
-\renewcommand{\etoctoprulecolorcmd}{\color{red!25}}
-\renewcommand{\etocbottomrule}{\hrule height 1pt}
-\renewcommand{\etocbottomrulecolorcmd}{\color{red!25}}
-% Befehle für die Rechtecke links und rechts des Inhaltsverzeichnisses
-\renewcommand{\etocleftrule}{\vrule width 5pt}
-\renewcommand{\etocrightrule}{\vrule width 5pt}
-\renewcommand{\etocleftrulecolorcmd}{\color{red!25}}
-\renewcommand{\etocrightrulecolorcmd}{\color{red!25}}
-% mit \fcolorbox legen wir einen farbigen Rahmen für den Titel an
-\fboxrule1pt
-\renewcommand{\etocbelowtocskip}{0pt\relax}
-\etocframedstyle {\normalsize\rmfamily\itshape
- \fcolorbox{red}{white}{\parbox{.8\linewidth}{\centering
- Dies ist das nach \etoc gestaltete Inhaltsverzeichnis, welches
- jedoch nur die Abschnitte und Unterabschnitte dieses Teils
- enthält. Da es gerahmt ist, darf es nicht größer sein als eine Seite.
- Es hat das Label |toc:b|.}}}
-\begin{figure}[ht!]
- \centering
-\normalcolor % Workaround für einen Bug von color und multicols (und figure)
-\tableofcontents \label{toc:b} \ref{toc:globalcmds}
-\end{figure}
-\endgroup
-\end{verbatim}
-
-
-\etocdefaultlines
-\begingroup
-\renewcommand{\etoccolumnsep}{2em}
-\renewcommand{\etocinnerleftsep}{1.5em}
-\renewcommand{\etocinnerrightsep}{1.5em}
-% specify a background color for the toc contents
-\renewcommand{\etocbkgcolorcmd}{\color{yellow!10}}
-% set up the top and bottom rules
-\renewcommand{\etoctoprule}{\hrule height 1pt}
-\renewcommand{\etoctoprulecolorcmd}{\color{red!25}}
-\renewcommand{\etocbottomrule}{\hrule height 1pt}
-\renewcommand{\etocbottomrulecolorcmd}{\color{red!25}}
-% set up the left and right rules
-\renewcommand{\etocleftrule}{\vrule width 5pt}
-\renewcommand{\etocrightrule}{\vrule width 5pt}
-\renewcommand{\etocleftrulecolorcmd}{\color{red!25}}
-\renewcommand{\etocrightrulecolorcmd}{\color{red!25}}
-% use \fcolorbox to set up a colored frame for the title
-\fboxrule1pt
-\renewcommand{\etocbelowtocskip}{-.5\baselineskip\relax}
-\etocframedstyle {\normalsize\rmfamily\itshape
- \fcolorbox{red}{white}{\parbox{.8\linewidth}{\centering
- Dies ist das nach \etoc gestaltete Inhaltsverzeichnis, welches
- jedoch nur die Abschnitte und Unterabschnitte dieses Teils
- enthält. Da es gerahmt ist, darf es nicht größer sein als eine Seite.
- Es hat das Label |toc:b|.}}}
-\begin{figure}[ht!]
- \centering
-\normalcolor % work-around to a bug involving color and multicols (and figure)
-\tableofcontents \label{toc:b} \ref{toc:globalcmds}
-\end{figure}
-\endgroup
-
-% Il y a un color leak du framed mais uniquement lorsqu'il est mis dans le
-% float. 2013/10/13, qui révèle un bug (?? NON) du style framed je vais regarder
-% mais bon. Le leak apparaît avec ruled aussi, et même avec juste multicolstyle
-% MAIS PAS EN UNE SEULE COLONNE (même framed ou ruled). il semble qu'il y aie
-% donc un problème d'interaction avec multicol là. à voir. Pas le temps
-% maintenant.
-
-% 2013/10/14
-% il s'agit en fait d'un bug de color+multicols+figure qui n'a rien à voir avec
-% etoc:
-% http://tex.stackexchange.com/questions/138783/color-leak-from-multicols-within-a-figure
-% J'ai trouvé le work-around qui consiste simplement à ajouter un \normalcolor
-% _avant_ le multicols à l'intérieur de figure
-
-\subsection{Eine (verrückte) In\-line-Dar\-stellung}
-
-Nun wollen wir eine etwas verrückte Inline-Darstellung erzeugen, womit das
-Inhaltsverzeichnis des gesamten Dokuments gesetzt werden soll. Hier werden die
-Unterabschnitte als Fußnoten dargestellt. Diese Art der Darstellung bietet sich
-eher für verlinkte Dokumente an, weniger für gedruckte! (Mir hingegen gefällt
-diese Art der Darstellung, obwohl mein Geschmack scheinbar oft nicht geteilt
-wird.)
-
-%%%% Note: 27 april 2014
-
-%%%% except for a miraculous situation depending from the quantity of previous
-%%%% material this TOC will have links extending accross pagebreaks, which
-%%%% dvipdfmx does not know how to handle completely. Apart from that the output
-%%%% is ok, thus no need to try seriously to avoid them.
-
-\begingroup
-\newsavebox{\forsubsections}
-\etocsetstyle{part}{\upshape. \etocskipfirstprefix}{. \upshape}{\bfseries\etocname:~~}{}
-\etocsetstyle{section}{\itshape\etocskipfirstprefix}{, }{\mdseries\etocname}{}
-\etocsetstyle{subsection}
- {\begin{lrbox}{\forsubsections}\upshape\etocskipfirstprefix}
- {; }
- {\etocname}
- {\end{lrbox}\footnote{\unhbox\forsubsections.}}
-\etocsetstyle{subsubsection}{ (\itshape\etocskipfirstprefix}
- {, }{\etocname}{\/\upshape)}
-\etocsettocstyle{Hier ist das inline dargestellte Inhaltsverzeichnis. }{.\par}
-\tableofcontents \label{toc:crazyinline}
-\endgroup
-
-Zur Erzeugung dieses Inhaltsverzeichnisses wurde folgender Code genutzt:
-\begin{verbatim}
-\begingroup
-\newsavebox{\forsubsections}
-\etocsetstyle{part}{\upshape. \etocskipfirstprefix}{. \upshape}
- {\bfseries\etocname:~~}{}
-\etocsetstyle{section}{\itshape\etocskipfirstprefix}{, }
- {\mdseries\etocname}{}
-\etocsetstyle{subsection}
- {\begin{lrbox}{\forsubsections}\upshape\etocskipfirstprefix}
- {; }{\etocname}{\end{lrbox}\footnote{\unhbox\forsubsections.}}
-\etocsetstyle{subsubsection}
- { (\itshape\etocskipfirstprefix}{, }{\etocname}{\/\upshape)}
-\etocsettocstyle{Hier ist das inline dargestellte Inhaltsverzeichnis. }{.\par}
-\tableofcontents
-\endgroup
-\end{verbatim}
-
-
-\clearpage
-\etocdepthtag.toc {custom}
-
-\part{\etoc nutzen und an\-passen}
-\label{part:custom}
-\thispartstats
-
-\etocdefaultlines
-\renewcommand{\etoctoprule}{\hrule height2pt depth0pt}
-\renewcommand{\etoctoprulecolorcmd}{\color{red}}
-
-\etocruledstyle{\normalfont\normalsize\rmfamily\fboxrule1pt\color{red}%
- \fbox{\parbox{.8\linewidth}{\centering\normalcolor Dies ist das
- Inhaltsverzeichnis mit den Abschnitten und Unterabschnitten von
- diesem Teil. Es hat das Label |toc:c|.}}}
-
-\localtableofcontents \label{toc:c}
-
-\section{Über\-blick über die Grund\-befehle zur Stil\-bearbeitung}
-
-\subsection{Ein lokales Inhalts\-ver\-zeich\-nis an\-passen}
-\hbox{\color{green}\fboxrule1pt\fboxsep1em
-\setbox0\hbox{\csa{etocthename}, \csa{etocthenumber}, \csa{etocthepage}, \csa{etoclink}\marg{Name des Links}}%
-\framebox[\linewidth][c]
-{\vbox{\hsize\wd0\normalcolor\noindent
-\csa{etocsetstyle}\marg{Name der Ebene}%
- \marg{Start}\marg{Präfix}\marg{Inhalt}\marg{Abschluss}\\
-\csa{etocname}, \csa{etocnumber}, \csa{etocpage},
-\csa{etocifnumbered}\marg{A}\marg{B}\\
-\csa{etocthename}, \csa{etocthenumber}, \csa{etocthepage}, \csa{etoclink}\marg{Name des Links}
-}}}
-
-\subsection{Das Aus\-sehen eines Inhalts\-ver\-zeichnisses an\-passen}
-\medskip
-\hbox{\color{green}\fboxrule1pt\fboxsep 1em
-\setbox0\hbox{\csa{etoctocstylewithmarksnouc}\oarg{Ebene}%
-\marg{Anzahl der Spalten}\marg{Titel}\marg{Symbol}}%
-\framebox[\linewidth][c]
-{\vbox{\hsize\wd0
-\normalcolor\noindent
-\csa{etocmulticolstyle}\oarg{Anzahl der Spalten}\marg{Überschrift}\\
-\csa{etoctocstyle}\oarg{Ebene}\marg{Anzahl der Spalten}\marg{Titel}\\
-\csa{etoctocstylewithmarks}\oarg{Ebene}\marg{Anzahl der Spalten}%
-\marg{Titel}\marg{Symbol}\\
-\csa{etoctocstylewithmarksnouc}\oarg{Ebene}\marg{Anzahl der Spalten}%
-\marg{Titel}\marg{Symbol}\\
-\csa{etocruledstyle}\oarg{Anzahl der Spalten}\marg{Titel}\\
-\csa{etocframedstyle}\oarg{Anzahl der Spalten}\marg{Titel}\\
-\csa{etocsettocstyle}\marg{vor dem Inhaltsverzeichnis}\marg{nach dem Inhaltsverzeichnis}}}}
-
-\subsection{In\-halts\-ver\-zeich\-nisse dar\-stellen}
-\medskip \hbox{\color{green}\fboxrule1pt\fboxsep1em
- \setbox0\hbox{\csa{etocname}, \csa{etocnumber},
- \csa{etocpage}, \csa{etocifnumbered}\marg{A}\marg{B}}%
- \framebox[\linewidth][c]
- {\vbox{\hsize\wd0\normalcolor\noindent
- \toc\\
- \localtoc\\
- \csa{etocmulticol}\oarg{Anzahl der Spalten}\marg{Überschrift}\\
- \csa{etoclocalmulticol}\oarg{Anzahl der Spalten}\marg{Überschrift}\\
- \csa{etocruled}\oarg{Anzahl der Spalten}\marg{Titel}\\
- \csa{etoclocalruled}\oarg{Anzahl der Spalten}\marg{Titel}\\
- \csa{etocframed}\oarg{Anzahl der Spalten}\marg{Titel}\\
- \csa{etoclocalframed}\oarg{Anzahl der Spalten}\marg{Titel}\\
- \hbox{}{\itshape\ttfamily\ \ \ \ und die mit Sternchen versehenen Varianten}
- }}}
-
-\subsection{Label und Referenzen}
-
-Optional dürfen die Befehle für Label oder Referenzen auf die Befehle, die die
-Darstellung des Inhaltsverzeichnisses realisieren, folgen. Hierbei ist
-unwichtig, ob letztere mit Sternchen versehen sind oder nicht.\par
-
-\medskip \hbox{\color{green}\fboxrule1pt\fboxsep1em
- \setbox0\hbox{\csa{etocname}, \csa{etocnumber},
- \csa{etocpage}, \csa{etocifnumbered}\marg{A}\marg{B}}%
- \framebox[\linewidth][c]
- {\vbox{\hsize\wd0\normalcolor\noindent
- \toc \csa{label}|\{toc:here\}|\\
- \toc \csa{ref}|\{toc:far\}| \\
- \toc \csa{label}|\{toc:here\}| \csa{ref}|\{toc:far\}| \\
- \localtoc \csa{label}|\{toc:here\}|\\
- \hbox{}{\itshape\ttfamily\ \ \ \ \ }%
- \csa{etocmulticol}{\itshape\ttfamily, etc. funktionieren ähnlich}
- }}}
-
-
-\medskip Ein \csa{ref}-Befehl, der auf einen Befehl zur Erzeugung eines lokalen
-Inhaltsverzeichnisses folgt, hat \emph{keinen} Einfluss auf diesen. Wird ein
-anderes Inhaltsverzeichnis erneut dargestellt, so wird nur dessen Inhalt
-angepasst. Sowohl das Aussehen des Inhaltsverzeichnisses als auch die
-Darstellung seiner Linien orientieren sich an dem, das gerade definiert wurde
-und nicht an dem, von dem der Inhalt übernommen wurde.
-
-\section{Der Linien\-standard des Pakets: \csbhyp{etoc\-defaultlines}}
-\label{etocdefaultlines}
-
-Die Linienstile stammen bereits aus einer frühen Entwicklungsphase des Pakets,
-weswegen sie sich noch sehr an \TeX{} orientieren und dadurch gruselig aussehen.
-Daher bieten sie keinen guten Einstiegspunkt. Oft muss man, will man an dem Stil
-etwas ändern, diesen aus dem Quellcode kopieren und direkt bearbeiten. Trotzdem
-soll in diesem Abschnitt erläutert werden, wie die Schriftarten, die vertikalen
-Abstände, etc. des gewählten Linienstils verändert werden können.
-
-Wurden die vorgegebenen Linienstile nicht durch \csa{etocsetstyle} verändert, so
-kann man sie mit den Befehlen \csa{etocdefaultlines} bzw. \csa{etoctoclines}
-einschalten. Außer, dass der Einzug eines Unterabschnitts etwas kleiner ist als
-der eines Abschnitts, gleichen sich beide Gliederungsebenen. (Wie dieses
-Dokument zeigt, werden Abschnitte in Dokumentklassen, denen der Befehl
-\csa{chapter} fehlt, stets mit einer fettgedruckten Type gesetzt.)
-Unter-Unterabschnitte werden inline, im selben Paragraphen und ohne Nummer oder
-Seitenzahl dargestellt. Dieser Stil wurde für Dokumente, die viele
-Unter-Unterabschnitte enthalten, entwickelt und anschließend mit solchen
-getestet. Für derartige Dokumente sollte ein zweispaltiges Layout verwendet
-werden, da diese Darstellung kompakter ist als jene, die standardmäßig durch
-\LaTeX{} erzeugt wird.\footnote{Außerdem werden dadurch einzelne Teil- bzw.
- Kapiteleinträge am Ende einer Seite oder einer Spalte vermieden, solange diese
- weiter untergliedert sind.} Verwendet man hingegen ein einspaltiges Layout und
-enthält der Teil nur wenige Unter-Unterabschnitte, so wird das
-Inhaltsverzeichnis im Vergleich zur mit \LaTeX{} gesetzten Variante etwas in die
-Breite gezogen. Weiterhin wirkt diese Darstellung weniger hierarisch als der
-\LaTeX{}-Standard, da sich die Darstellung von Abschnitten und Unterabschnitten
-kaum unterscheidet. (Dies gilt besonders, wenn die Dokumentklasse den Befehl
-\csa{chapter} erlaubt.)
-
-Da wir für das \hyperref[toc:main]{zentrale Inhaltsverzeichnis}
-|\etocsetlevel{subsection}{3}| gesetzt haben, werden die Unterabschnitte und die
-Unter-Unterabschnitte inline dargestellt.
-
-Im Gegensatz dazu wollen wir nun das zentrale Inhaltsverzeichnis so darstellen,
-als ob wir eine Dokumentklasse genutzt hätten, die den Befehl \csa{chapter}
-erlaubt. Daher werden die Abschnitte im Folgenden als Kapitel und die
-Unterabschnitte als Abschnitte gedruckt, was wir u. a. mit Hilfe des Befehls
-\csa{etocsetlevel} erreichen. Zusätzlich nutzen wir für Abschnitte, welche in
-Wirklichkeit unsere Unterabschnitte sind, statt der fetten Serie einer
-Schriftart die halbfette Variante. Hierfür modifizieren wir den Befehl
-\csa{etocfontone}. Weiterhin nutzen wir einen gepunkteten Einzug, da dieser
-weniger Platz einnimmt als der Paketstandard.
-
-\begin{verbatim}
-\etocruledstyle[2]{\normalfont\normalsize\rmfamily\itshape
- \fbox{\parbox{.6\linewidth}{
- \leftskip 0pt plus .5fil
- \rightskip 0pt plus -.5fil
- \parfillskip 0pt plus 1fil
- Dies ist das zentrale zweispaltige Inhaltsverzeichnis, das den
- Standardlinienstil von \etoc nutzt, wobei die Abschnitte wie Kapitel und die
- Unterabschnitte wie Abschnitte gesetzt wurden. }}}
-\etocdefaultlines
-\etocsetnexttocdepth{1}
-\begingroup
-\etocsetlevel{section}{0}
-\etocsetlevel{subsection}{1}
-\renewcommand*{\etocfontone}{\normalfont \normalsize}
-\renewcommand*{\etoctoclineleaders}
- {\hbox{\normalfont\normalsize\hbox to 1ex {\hss.\hss}}}
-\sloppy
-\tableofcontents
-\endgroup
-\end{verbatim}
-
-\etocruledstyle[2]{\normalfont\normalsize\rmfamily\itshape
- \fbox{\parbox{.6\linewidth}{
- \leftskip 0pt plus .5fil
- \rightskip 0pt plus -.5fil
- \parfillskip 0pt plus 1fil Dies ist das zentrale zweispaltige
- Inhaltsverzeichnis, das den Standardlinienstil von \etoc nutzt, wobei die
- Abschnitte wie Kapitel und die Unterabschnitte wie Abschnitte gesetzt
- wurden. }}}
-
-\etocdefaultlines
-\etocsetnexttocdepth{1}
-
-\begingroup
-\etocsetlevel{section}{0}
-\etocsetlevel{subsection}{1}
-\renewcommand*{\etocfontone}{\normalfont \normalsize}
-\renewcommand*{\etoctoclineleaders}
- {\hbox{\normalfont\normalsize\hbox to 1ex {\hss.\hss}}}
-\sloppy
-\tableofcontents
-\endgroup
-
-\section{\etoc individuell an\-passen}
-
-\subsection{Den durch \etoc vor\-de\-finierten Linien\-stil individualisieren}
-
-Im Folgenden sollen einfach die wichtigsten Befehle des Pakets aufgelistet werden. Man kann diese
-bequem mittels \csa{renewcommand} anpassen:
-\begin{verbatim}
-\newcommand*\etocfontminustwo{\normalfont \LARGE \bfseries}
-\newcommand*\etocfontminusone{\normalfont \large \bfseries}
-\newcommand*\etocfontzero{\normalfont \large \bfseries}
-\newcommand*\etocfontone{\normalfont \normalsize \bfseries}
-\newcommand*\etocfonttwo{\normalfont \normalsize}
-\newcommand*\etocfontthree{\normalfont \footnotesize}
-
-\newcommand*\etocsepminustwo{4ex plus .5ex minus .5ex}
-\newcommand*\etocsepminusone{4ex plus .5ex minus .5ex}
-\newcommand*\etocsepzero{2.5ex plus .4ex minus .4ex}
-\newcommand*\etocsepone{1.5ex plus .3ex minus .3ex}
-\newcommand*\etocseptwo{.5ex plus .1ex minus .1ex}
-\newcommand*\etocsepthree{.25ex plus .05ex minus .05ex}
-
-\newcommand*\etocminustwoleftmargin{1.5em plus 0.5fil}
-\newcommand*\etocminustworightmargin{1.5em plus -0.5fil}
-\newcommand*\etocminusoneleftmargin{1em}
-\newcommand*\etocminusonerightmargin{1em}
-
-\newcommand*\etocbaselinespreadminustwo{1}
-\newcommand*\etocbaselinespreadminusone{1}
-\newcommand*\etocbaselinespreadzero{1}
-\newcommand*\etocbaselinespreadone{1}
-\newcommand*\etocbaselinespreadtwo{1}
-\newcommand*\etocbaselinespreadthree{.9}
-\newcommand*\etoctoclineleaders
- {\hbox{\normalfont\normalsize\hbox to 2ex {\hss.\hss}}}
-\newcommand*\etocabbrevpagename{p.~} % muss der Sprache angepasst werden
- % deutsche Nutzer: \renewcommand*\etocabbrevpagename{S.~}
-\newcommand*\etocpartname{\partname}
-\newcommand*\etocbookname{Book} % muss der Sprache angepasst werden
-\end{verbatim}
-
-Der Standardlinienstil kann innerhalb der \etoc-Umgebung nicht individualisiert
-werden. Wie bereits erwähnt, wird das Paket nach Aufruf des Befehls
-\etocstandardlines kaum verwendet und agiert lediglich auf globaler Ebene,
-sodass die Einträge des Inhaltsverzeichnisses (hoffentlich) so dargestellt
-werden, als ob das Paket \etoc fehlen würde.\footnote{Innerhalb der
- KOMA-script-Klassen muss der Befehl \csa{etocstandarddisplaystyle} genutzt
- werden, damit die Option |toc=left| auch für die Linieneinträge gilt.}
-
-Wurde mittels \csa{etocsetlevel} die Tiefe der Gliederung soweit herabgesetzt,
-dass \etoc die Befehle für bestimmte Gliederungsebenen kennt, so wirkt der
-Kompatibilitätsmodus, also \csa{etocstandardlines}, auch auf diese. Dies gilt
-natürlich nur für Gliederungsbefehle, die dem Standard von \LaTeX{} entsprechen
-und die alle Definitionen liefern, welche zum Darstellen von Einträgen im
-Inhaltsverzeichnis benötigt werden. (Es muss ein Makro der Art \csa{l@irgendwas}
-existieren.)
-
-Sobald der Befehl \csa{etocsetstyle} aufgerufen wird, wird zusätzlich der
-Kompatibilitätsmodus ausgeschaltet. Es spielt hierbei keine Rolle, ob der Befehl
-in der Präambel oder im Hauptteil des Dokuments steht.
-
-\subsection{Die Dar\-stellung eines Inhalts\-ver\-zeich\-nisses an\-spassen}
-\label{ssec:customdisplay}
-
-Erneut wollen wir uns darauf beschränken die relevanten Makros aufzulisten, da
-deren Funktion aus ihrem Namen ableitbar ist. Soll die Länge eines Befehls
-verändert werden, so muss der entsprechende Befehl mittels \csa{renewcommand}
-und nicht durch \csa{setlength} verändert werden. Weiterhin erlauben Befehle,
-welche die Farbe verändern, nicht nur die Standardfarben. Will man ihr Verhalten
-ändern, so muss man in der neuen Definition den Befehl \csa{color} aufrufen. Um
-ihre Wirkung zu beenden, muss man sie so neu definieren, dass sie danach nur den
-Befehl \csa{relax} enthalten.
-\begin{verbatim}
-\newcommand*\etocabovetocskip{3.5ex plus 1ex minus .2ex}
-\newcommand*\etocbelowtocskip{3.5ex plus 1ex minus .2ex}
-
-\newcommand*\etoccolumnsep{2em}
-\newcommand*\etocmulticolsep{0ex}
-\newcommand*\etocmulticolpretolerance{-1}
-\newcommand*\etocmulticoltolerance{200}
-\newcommand*\etocdefaultnbcol{2}
-\newcommand*\etocinnertopsep{2ex}
-\newcommand*\etoctoprule{\hrule}
-\newcommand*\etoctoprulecolorcmd{\relax}
-
-% nur für gerahmte Inhaltsverzeichnisse:
-\newcommand*\etocinnerleftsep{2em}
-\newcommand*\etocinnerrightsep{2em}
-\newcommand*\etocinnerbottomsep{3.5ex}
-
-\newcommand*\etocleftrule{\vrule}
-\newcommand*\etocrightrule{\vrule}
-\newcommand*\etocbottomrule{\hrule}
-\newcommand*\etocleftrulecolorcmd{\relax}
-\newcommand*\etocrightrulecolorcmd{\relax}
-\newcommand*\etocbottomrulecolorcmd{\relax}
-
-\newcommand*\etocbkgcolorcmd{\relax}
-
-% Haken
-\newcommand\etocframedmphook{\relax}
-\end{verbatim}
-
-Der Befehl \csa{etocframedmphook} ist direkt hinter dem Anfang einer Minipage,
-innerhalb der der Inhalt eines gerahmten Verzeichnisses gesetzt wird, verankert.
-
-Wurden die Farbbefehle, also \csa{...colorcmd}, nicht verändert, so expandieren
-sie lediglich zu \csa{relax}. (Daher muss man für ihre Verwendung nicht die
-Pakete |color| oder |xcolor| einbinden.) Hat man jedoch einen solchen Befehl -
-wie zum Beispiel \csa{etocbkgcolorcmd} - so verändert, dass er nun tatsächlich
-eine Farbe anzeigt, so kann dies nur mittels
-|\renewcommand{\etocbkgcolorcmd}{\relax}| aufgehoben werden und nicht durch
-\csa{let}\csa{etocbkgcolorcmd}\csa{relax}.
-
-Wie man an dem Beispiel \centeredline{|\renewcommand{\etoctoprule}{\hrule height
- 1ex}|} erkennen kann, werden die Größen des oberen Rechtecks in den Maßen
-|ex| und |em| angegeben.
-
-Sobald der Titel während der Befehlsausführung von \csa{etocruledtoc} oder
-\csa{etocframedtoc} gesetzt wurde, nutzt der Paketcode dessen Schriftgröße, um
-die Bedeutung von \glq1ex\grq~zu ermitteln. Natürlich dürfen auch die anderen
-Befehle zur Erzeugung eines Rechtecks Maße annehmen, deren Wert sich nur durch
-eine zugehörige Schriftgröße ergibt. Hierbei dient jedoch die Schrift vor dem
-Inhaltsverzeichnis als Referenz.
-
-Wie in \TeX{} üblich, werden sowohl das Rechteck vor als auch das nach dem
-Inhalt des Verzeichnisses durch einfache Einzüge (einer festgelegten Höhe)
-realisiert. Es muss sich hierbei also nicht um echte Rechtecke handeln. Die
-Rechtecke links und rechts vom Inhalt werden hingegen nicht durch (horizontale)
-Einzüge verwirklicht. Sie stellen vielmehr Objekte einer bestimmten Weite dar.
-Daher darf hier \emph{nur} die Syntax von \TeX{}-Befehlen, mit deren Hilfe man
-Rechtecke erzeugt, genutzt werden.
-
-\section{Ein weiteres Bei\-spiel für ein farbiges Inhalts\-verzeichnis}
-\label{ssec:tocclone}
-
-Beim Befehl \csa{etocframedstyle} wird der Titel in der Mitte des oberen Rechtecks positioniert. Dies würde im folgenden Beispiel
-jedoch sehr unschön aussehen, weswegen wir den Titel innerhalb der \meta{start}-Umgebung eines Abschnittbefehls
-platzieren. Hierdurch wird er innerhalb des Rahmens gesetzt.
-
-\begin{verbatim}
-\begingroup
-\definecolor{subsecnum}{RGB}{13,151,225}
-\definecolor{secbackground}{RGB}{0,177,235}
-\definecolor{tocbackground}{RGB}{212,237,252}
-
-\renewcommand{\etocbkgcolorcmd}{\color{tocbackground}}
-\renewcommand{\etocleftrulecolorcmd}{\color{tocbackground}}
-\renewcommand{\etocrightrulecolorcmd}{\color{tocbackground}}
-\renewcommand{\etocbottomrulecolorcmd}{\color{tocbackground}}
-\renewcommand{\etoctoprulecolorcmd}{\color{tocbackground}}
-
-\renewcommand{\etocleftrule}{\vrule width 1cm}
-\renewcommand{\etocrightrule}{\vrule width .5cm}
-\renewcommand{\etocbottomrule}{\hrule height 12pt}
-\renewcommand{\etoctoprule}{\hrule height 12pt}
-
-\renewcommand{\etocinnertopsep}{0pt}
-\renewcommand{\etocinnerbottomsep}{0pt}
-\renewcommand{\etocinnerleftsep}{0pt}
-\renewcommand{\etocinnerrightsep}{0pt}
-
-\newcommand\shiftedwhiterule[2]{%
- \hbox to \linewidth{\color{white}%
- \hskip#1\leaders\vrule height1pt\hfil}\nointerlineskip\vskip#2}
-
-\etocsetstyle{subsubsection}{\etocskipfirstprefix}
- {\shiftedwhiterule{\leftskip}{6pt}}
- {\sffamily\footnotesize
- \leftskip2.5cm\hangindent1cm\rightskip1cm\noindent
- \hbox to 1cm{\color{subsecnum}\etocnumber\hss}%
- \color{black}\etocname\leaders\hbox to .2cm{\hss.}\hfill
- \rlap{\hbox to 1cm{\hss\etocpage\hskip.2cm}}\par
- \nointerlineskip\vskip3pt}
- {}
-
-\etocsetstyle{subsection}{\etocskipfirstprefix}
- {\shiftedwhiterule{1.5cm}{6pt}}
- {\sffamily\small
- \leftskip1.5cm\hangindent1cm\rightskip1cm\noindent
- \hbox to 1cm{\color{subsecnum}\etocnumber\hss}%
- \color{black}\etocname\leaders\hbox to .2cm{\hss.}\hfill
- \rlap{\hbox to 1cm{\hss\etocpage\hskip.2cm}}\par
- \nointerlineskip\vskip6pt}
- {}
-
-\newcommand{\coloredstuff}[2]{%
- \leftskip0pt\rightskip0pt\parskip0pt
- \fboxsep0pt % Auch ohne Rahmen nutzt \colorbox den Befehl \fboxsep!
- \noindent\colorbox{secbackground}
- {\parbox{\linewidth}{%
- \vskip5pt
- {\noindent\color{#1}#2\par}\nointerlineskip
- \vskip3pt}}%
- \par\nointerlineskip}
-
-\etocsetstyle{section}
-{\coloredstuff{white}
- {\hfil \hyperref[toc:b]{\bfseries\large Ich bin der Zwilling von
- diesem Verzeichnis (Klick mich an!)}\hfil}}
-{\vskip3pt\sffamily\small}
-{\coloredstuff{white}
- {\leftskip1.5cm\rightskip.5cm\parfillskip-\rightskip
- \makebox[0pt][r]{\makebox[.5cm][r]{\etocnumber\hspace{.2cm}}}%
- \etocname\hfill\makebox[.5cm][r]{\etocpage\hspace{.2cm}}}%
- \vskip6pt }
-{}
-
-\etocframedstyle[1]{}
-\tableofcontents \label{toc:clone} \ref{toc:globalcmds}
-\endgroup
-\end{verbatim}
-
-\begingroup
-\definecolor{subsecnum}{RGB}{13,151,225}
-\definecolor{secbackground}{RGB}{0,177,235}
-\definecolor{tocbackground}{RGB}{212,237,252}
-
-\renewcommand{\etocbkgcolorcmd}{\color{tocbackground}}
-\renewcommand{\etocleftrulecolorcmd}{\color{tocbackground}}
-\renewcommand{\etocrightrulecolorcmd}{\color{tocbackground}}
-\renewcommand{\etocbottomrulecolorcmd}{\color{tocbackground}}
-\renewcommand{\etoctoprulecolorcmd}{\color{tocbackground}}
-
-\renewcommand{\etocleftrule}{\vrule width 1cm}
-\renewcommand{\etocrightrule}{\vrule width .5cm}
-\renewcommand{\etocbottomrule}{\hrule height 12pt}
-\renewcommand{\etoctoprule}{\hrule height 12pt}
-
-\renewcommand{\etocinnertopsep}{0pt}
-\renewcommand{\etocinnerbottomsep}{0pt}
-\renewcommand{\etocinnerleftsep}{0pt}
-\renewcommand{\etocinnerrightsep}{0pt}
-
-\newcommand\shiftedwhiterule[2]{%
- \hbox to \linewidth{\color{white}%
- \hskip#1\leaders\vrule height1pt\hfil}\nointerlineskip
-\vskip#2}
-
-\etocsetstyle{subsubsection}{\etocskipfirstprefix}
-{\shiftedwhiterule{\leftskip}{6pt}}
-{\sffamily\footnotesize
-\leftskip2.5cm\hangindent1cm\rightskip1cm\noindent
-\hbox to 1cm{\color{subsecnum}\etocnumber\hss}%
-\color{black}\etocname\leaders\hbox to .2cm{\hss.}\hfill
-\rlap{\hbox to 1cm{\hss\etocpage\hskip.2cm}}\par
-\nointerlineskip\vskip3pt}
-{}
-
-\etocsetstyle{subsection}{\etocskipfirstprefix}
-{\shiftedwhiterule{1.5cm}{6pt}}
-{\sffamily\small
-\leftskip1.5cm\hangindent1cm\rightskip1cm\noindent
-\hbox to 1cm{\color{subsecnum}\etocnumber\hss}%
-\color{black}\etocname\leaders\hbox to .2cm{\hss.}\hfill
-\rlap{\hbox to 1cm{\hss\etocpage\hskip.2cm}}\par
-\nointerlineskip\vskip6pt}
-{}
-
-\newcommand{\coloredstuff}[2]{%
- \leftskip0pt\rightskip0pt\parskip0pt
- \fboxsep0pt % \colorbox uses \fboxsep also when no frame!
- \noindent\colorbox{secbackground}
- {\parbox{\linewidth}{%
- \vskip5pt
- {\noindent\color{#1}#2\par}\nointerlineskip
- \vskip3pt}}%
- \par\nointerlineskip}
-
-% v1.07l on the occasion of traduction into German documentation
- % APRIL 26, 2014 Improvement in the section style for better placement of
- % page number when the section name is more than one line long. Use of
- % \makebox rather than \hbox, to be more LaTeX like.
-\etocsetstyle{section}
-{\coloredstuff{white}
- {\hfil \hyperref[toc:b]
- {\bfseries\large Ich bin der Zwilling von diesem
- Verzeichnis (Klick mich an!)}%
- \hfil}}
-{\vskip3pt\sffamily\small}
-{\coloredstuff{white}
- {\leftskip1.5cm\rightskip.5cm\parfillskip-\rightskip
- \makebox[0pt][r]{\makebox[.5cm][r]{\etocnumber\hspace{.2cm}}}%
- \etocname\hfill\makebox[.5cm][r]{\etocpage\hspace{.2cm}}}%
- \vskip6pt }
-{}
-
-\etocframedstyle[1]{}
-
-\begin{figure}[ht!]\centering
- \tableofcontents \label{toc:clone} \ref{toc:globalcmds}
-\end{figure}
-\endgroup
-
-Das Inhaltsverzeichnis befindet sich in einer
-\hyperref[toc:clone]{float}-Umgebung, die man \vpageref{toc:clone} findet. Da
-diese Art von Code keine zusätzlichen Pakete verlangt, ist er etwas
-komplexer.\footnote{Zudem zeigt er die Vorliebe des Autors für die
-\TeX{}-Syntax.} Außerdem wurde er in einem früheren Stadium entwickelt und
-seither nicht überarbeitet.
-
-Da Rahmen (welche hier genutzt wurden, um die Hintergrundfarbe zu setzen) nur
-die Hintergrundfarbe innerhalb einer Seite verändern, würde es sich anbieten,
-weitere Pakete einzubinden, mit deren Hilfe man die Hintergrundfarbe über
-mehrere Seiten hinweg verändern kann.
-
-Alle Befehle, welche die Farbe verändern, sind in \etoc zu Beginn so definiert,
-dass sie nichts verändern. Daher kann der Nutzer selbst entscheiden, ob er
-Farben nutzen will oder nicht.
-
-
-\clearpage
-\etocdepthtag.toc {tips}
-
-\part{Tipps}
-\label{part:tipsandtricks}
-
-\thispartstats
-
-\etocsettocstyle{}{}
-\etocstandardlines
-\localtableofcontents
-
-\section{\ldots\ und Tricks}
-
-\subsection{Hacken "`framed parboxes"'}
-
-
-\begin{verbatim}
-\etocdefaultlines
-\renewcommand\etoctoprule{\hrule height 2pt depth 2pt}
-\etocruled{\color{green}\fboxrule2pt\fboxsep1ex
- \fbox{\raisebox{-\fontdimen22\textfont2}
- {\color{blue}\parbox{.5\linewidth}
- {\normalfont Dieser Text ist vertikal perfekt zentriert
- unter Berücksichtigung der \emph{surrounding horizontal rules.}}}}
-\ref{toc:globalcmds}
-\end{verbatim}
-
-\etocdefaultlines
-
-\renewcommand\etoctoprule{\hrule height 2pt depth 2pt}
-
-\etocruled{\color{green}\fboxrule2pt\fboxsep1ex
- \fbox{\raisebox{-\fontdimen22\textfont2}
- {\color{blue}\parbox{.5\linewidth}
- {\normalfont Dieser Text ist vertikal perfekt zentriert
- unter Berücksichtigung der \emph{surrounding horizontal rules.}}}}}
- \ref{toc:globalcmds}
-
-
-\subsection{Umstellen der Ebenen}
-\label{subsec:interverting}
-
-Lasst uns alle Unterabschnitte zeigen und aufzählen, die in diesem Dokument
-vorkommen (Siehe \autoref{part:surprising} für andere Verwendungen dieser Technik.):
-\begin{verbatim}
-\etocsetnexttocdepth{2}
-\begingroup
-\etocsetlevel{part}{3}
-\etocsetlevel{section}{3}
-\etocsetstyle{subsection}
- {\small\begin{enumerate}[itemsep=0pt,label=,leftmargin=0pt]}
- {\normalfont\bfseries\item}
- {\roman{enumi}. \mdseries\etocname{} (\etocnumber, p.~\etocpage)}
- {\end{enumerate}}
-\renewcommand{\etoccolumnsep}{2.75em}
-\renewcommand{\columnseprule}{1pt}
-\etocmulticol[3]{\subsection{Alle Unterabschnitte in diesem Dokument}}
-\endgroup
-\end{verbatim}
-
-\etocsetnexttocdepth{2}
-
-\begingroup
-\etocdefaultlines
-\etocstandarddisplaystyle
-\etocsetlevel{book}{3}
-\etocsetlevel{part}{3}
-\etocsetlevel{chapter}{3}
-\etocsetlevel{section}{3}
-\etocsetstyle{subsection}{\small
-\begin{enumerate}[itemsep=0pt,label=,leftmargin=0pt]}
-{\normalfont\bfseries\item}
-{\roman{enumi}. \mdseries\etocname{} (\etocnumber, S.~\etocpage)}
-{\end{enumerate}}
-
-\renewcommand{\etoccolumnsep}{2.75em}
-\renewcommand{\columnseprule}{1pt}
-
-%%\etocmarkbothnouc{List of all subsections}
-%% le mark (\markright) est fait par \subsection
-
-\etocmulticol[3]{\subsection{{Alle Unterabschnitte in diesem Dokument}}\label{toc:allsubsections}}
-
-
-\endgroup
-
-\subsection{Sta\-ti\-sti\-ken anzeigen}\label{ssec:statistics}
-
-Jeder Teil dieses Dokuments beginnt mit einem Paragraphen, der sagt, wieviele
-Kapitel und Unterkapitel er hat. Nun, jeder von diesen Paragraphen ist ein
-Inhaltsverzeichnis! Wir haben ein Makro \csa{thispartstats} geschaffen, um dies
-zu tun. Es nutzt "`Speicher"'-Boxen, um die Informationen über die ersten und
-späteren Kapitel und Unterkapitel zu halten. Boxen zu nehmen, ist die einfachste
-Art und Weise |hyperref|-Links für spätere Verwendungen zu kapseln (ob es einer
-ist oder keiner). Allerdings kann man dann nichts an der Schriftart oder Farbe
-ändern (die \TeX -Primitive \csa{setbox} eher nehmend als von \LaTeX{}
-\csa{sbox} würde die Farbe Farbe um das ohne Boxen gespeicherte Feld verändern).
-Wenn eine solche Notwendigkeit entsteht, muss man von der Boxenverwendung zum
-Makro nehmen wechseln und die |hyperref|-Daten für später speichern, wie im oben
-im Code von \autoref{ssec:molecule} vorgestellt. Wir präsentieren auch diese
-zweite Methode.
-
-Aber als Erstes der Code von \csa{thispartstats}:\par
-\begin{verbatim}
-\newsavebox\firstnamei \newsavebox\firstnumberi
-\newsavebox\lastnamei \newsavebox\lastnumberi
-\newsavebox\firstnameii \newsavebox\firstnumberii
-\newsavebox\lastnameii \newsavebox\lastnumberii
-\newcounter{mycounti} \newcounter{mycountii}
-\newcommand*{\thispartstatsauxi}{} \newcommand*{\thispartstatsauxii}{}
-\newcommand*{\oldtocdepth}{}
-\newcommand*{\thispartstats}{%
- \setcounter{mycounti}{0}%
- \setcounter{mycountii}{0}%
- \def\thispartstatsauxi{%
- \sbox{\firstnamei}{\etocname}%
- \sbox{\firstnumberi}{\etocnumber}%
- \def\thispartstatsauxi{}}%
- \def\thispartstatsauxii{%
- \sbox{\firstnameii}{\etocname}%
- \sbox{\firstnumberii}{\etocnumber}%
- \def\thispartstatsauxii{}}%
- \begingroup
- \etocsetstyle{subsection} {} {}
- {\thispartstatsauxii
- \stepcounter{mycountii}%
- \sbox{\lastnameii}{\etocname}%
- \sbox{\lastnumberii}{\etocnumber}} {}%
- \etocsetstyle{section}
- {}
- {}
- {\thispartstatsauxi
- \stepcounter{mycounti}%
- \sbox{\lastnamei}{\etocname}%
- \sbox{\lastnumberi}{\etocnumber}}
-% Hier wird ein Befehl definiert, der fuer jedes Teil ein paar Fakten sammelt
-% und ausgibt.
- {Zu Beginn wollen wir ein paar Fakten zu diesem Teil nennen. Er enthält
- \arabic{mycounti} Abschnitt\ifnum\value{mycounti}>1 e\fi{} und
- \arabic{mycountii} Unterabschnitt\ifnum\value{mycountii}>1 e\fi. Der Name des ersten
- Abschnitts lautet
- \glqq\unhbox\firstnamei{}\grqq~und er hat die Gliederungsnummer
- \glqq\unhbox\firstnumberi\grqq. Der Name des letzten Abschnitts lautet
- \glqq\unhbox\lastnamei{}\grqq~und er hat die Nummer
- \glqq\unhbox\lastnumberi\grqq.
- \ifnum\value{mycountii}>0 Der erste
- Unterabschnitt heißt
- \glqq\unhbox\firstnameii{}\grqq~und er hat die Nummer
- \glqq\unhbox\firstnumberii\grqq. Der Name des letzten Unterabschnitts ist
- \glqq\unhbox\lastnameii{}\grqq~und dessen Nummer ist
- \glqq\unhbox\lastnumberii\grqq.\fi }%
- \etocinline
- \etocsettocstyle {}{}
- \etocsetnexttocdepth{2}%
- \localtableofcontents % to be used at the top level of a Part.
- \endgroup
-}
-\end{verbatim}
-
-Und nun, die Variante mit Makros anstelle von der mit Boxen (diese Variante
-steht hier für die Verwendung in einem Kapitel).
-\begin{verbatim}
-\makeatletter
-\newcommand*\firstsubname {} \newcommand*\lastsubname {}
-\newcommand*\firstsubnumber {} \newcommand*\lastsubnumber {}
-\newcommand*\thisspecialstatsaux{}
-\newcommand*{\thisspecialstats}{%
- \setcounter{mycounti}{0}%
- \def\thisspecialstatsaux{%
- \let\firstsubname\etocthelinkedname
- \let\firstsubnumber\etocthelinkednumber
- \def\thisspecialstatsaux{}}
- \begingroup
- \etocsetstyle{subsection}
- {}
- {}
- {\thisspecialstatsaux
- \stepcounter{mycounti}%
- \let\lastsubname\etocthelinkedname
- \let\lastsubnumber\etocthelinkednumber }
- {Zu Beginn wollen wir ein paar Fakten zu diesem Teil nennen. Er enthält
- \arabic{mycounti} Unterabschnitt\ifnum\value{mycounti}>1 e\fi{}. Der Name des ersten
- Abschnitts lautet\emph{\firstsubname{}} und er hat die Gliederungsnummer
- {\firstsubnumber}. Der Name des letzten Unterabschnitts lautet
- \emph{\lastsubname{}} und er hat die Nummer{\lastsubnumber}.}
- \etocsettocstyle {}{}
- \etocinline
- \etocsetnexttocdepth {1}%
- \localtableofcontents % to be used within a section
- \endgroup
-}
-\makeatother
-\end{verbatim}
-
-\subsection{Tiefe Tags nehmen}
-\label{ssec:tocwithdepthtags}
-
-Wir wollen ein TOC, das für jeden |\part| eine Überschrift hat (außer der letzte
-Teil mit dem Quellcode, wofür beschließen, ihn nicht einzubeziehen), und wir
-wollen \autoref{part:globalcmds} öffnen für die Paragraphen. Um dies zu
-erreichen, fügen wir zu dieser Quelle verschiedene
-\csb{etocdepthtag.toc}-Befehle und es bleibt jetzt, zu setzen die Levels für
-jeden Tag mit \csb{etocsettagdepth} (dies wurde oben in diesem Dokument
-verwendet in \autoref{sec:secondexample}, in einer Gruppe, damit es keine
-Auswirkungen auf andere Inhaltsverzeichnisse hat).
-
-Allerdings sind die Linienstile des Pakets nicht in der Lage Paragraphen
-anzuzeigen und die Standardlinienstile der Dokumentklasse geben zu viel
-vertikalen Abstand (in diesem Zusammenhang) bei der Anzeige einer
-Teilüberschrift im TOC aus.Deshalb kochen wir unseren eigenen, schnell
-entwickelten Linienstil, in der Art von \autoref{sec:firstexample} (aber auf dem
-Weg Seitenzahlen von rechts, was mehr wie eine Methode von \LaTeX2e's
-|\@dottedtocline| ist; und mehrzeilige Überschriften lassen nun den Bereich
-unter den Zahlen leer, im Gegensatz zu dem Code von \autoref{sec:firstexample}).
-Und nach ein paar Minuten für die Wahl der Längen (jetzt ist das erstmal getan,
-es kann leicht recycelt) erhalten wir:
-
-\etocsetnexttocdepth {all}
-\begingroup
-\parindent 0pt
-\leftskip 0cm
-\rightskip 0.75cm
-\parfillskip -\rightskip
-\newcommand*{\EndParWithPagenoInMargin}
- {\nobreak\hfill
- \nobreak\makebox[0.75cm][r]{\mdseries\normalsize\etocpage}%
- \par}
-\renewcommand*\etoctoclineleaders
- {\hbox{\normalfont\normalsize\hbox to .75ex {\hss.\hss}}}
-\newcommand*{\EndParWithPagenoInMarginAndLeaders}
- {\nobreak\leaders\etoctoclineleaders\hfill
- \nobreak\makebox[0.75cm][r]{\mdseries\normalsize\etocpage}%
- \par }
-\etocsetstyle {part}
- {}
- {\leavevmode\leftskip 1cm\relax}
- {\bfseries\large\llap{\makebox[1cm][r]{\etocnumber\ \ }}%
- \etocname\EndParWithPagenoInMargin\smallskip}
- {}
-\etocsetstyle {section}
- {}
- {\leavevmode\leftskip 1.75cm\relax}
- {\bfseries\normalsize\llap{\makebox[.75cm][l]{\etocnumber}}%
- \etocname\EndParWithPagenoInMarginAndLeaders}
- {}
-\etocsetstyle {subsection}
- {}
- {\leavevmode\leftskip 2.75cm\relax }
- {\mdseries\normalsize\llap{\makebox[1cm][l]{\etocnumber}}%
- \etocname\EndParWithPagenoInMarginAndLeaders}
- {}
-\etocsetstyle {subsubsection}
- {}
- {\leavevmode\leftskip 4cm\relax }
- {\mdseries\normalsize\llap{\makebox[1.25cm][l]{\etocnumber}}%
- \etocname\EndParWithPagenoInMarginAndLeaders}
- {}
-\etocsetstyle {paragraph}
- {}
- {\leavevmode\leftskip 5.5cm\relax }
- {\mdseries\normalsize\llap{\makebox[1.5cm][l]{\etocnumber}}%
- \etocname\EndParWithPagenoInMarginAndLeaders}
- {}
-\etocsettagdepth {preamble} {none}
-\etocsettagdepth {overview} {part}
-\etocsettagdepth {arbitrarily}{part}
-\etocsettagdepth {surprising} {part}
-\etocsettagdepth {linestyles} {part}
-\etocsettagdepth {globalcmds} {paragraph}
-\etocsettagdepth {custom} {part}
-\etocsettagdepth {tips} {part}
-\etocsettagdepth {code} {none}
-\renewcommand\etoctoprule {\hrule height 3pt\relax }
-\renewcommand\etoctoprulecolorcmd {\color{blue}}
-\renewcommand\etocaftercontentshook
- {\medskip\begingroup \color{blue}\hrule height 3pt \endgroup }
-\etocruledstyle [1]{\Large\bfseries
- \fbox{\makebox[8cm]{Ein TOC -- nehmend tiefe Tags}}}
-\sloppy
-\tableofcontents
-
-\begin{verbatim}
-\etocsetnexttocdepth {all}
-\begingroup
-\parindent 0pt \leftskip 0cm \rightskip .75cm \parfillskip -\rightskip
-\newcommand*{\EndParWithPagenoInMargin}
- {\nobreak\hfill
- \nobreak\makebox[0.75cm][r]{\mdseries\normalsize\etocpage}%
- \par}
-\renewcommand*\etoctoclineleaders
- {\hbox{\normalfont\normalsize\hbox to .75ex {\hss.\hss}}}
-\newcommand*{\EndParWithPagenoInMarginAndLeaders}
- {\nobreak\leaders\etoctoclineleaders\hfill
- \nobreak\makebox[0.75cm][r]{\mdseries\normalsize\etocpage}%
- \par }
-\etocsetstyle {part}
- {}
- {\leavevmode\leftskip 1cm\relax}
- {\bfseries\large\llap{\makebox[1cm][r]{\etocnumber\ \ }}%
- \etocname\EndParWithPagenoInMargin\smallskip}
- {}
-\etocsetstyle {section}
- {}
- {\leavevmode\leftskip 1.75cm\relax}
- {\bfseries\normalsize\llap{\makebox[.75cm][l]{\etocnumber}}%
- \etocname\EndParWithPagenoInMarginAndLeaders}
- {}
-\etocsetstyle {subsection}
- {}
- {\leavevmode\leftskip 2.75cm\relax }
- {\mdseries\normalsize\llap{\makebox[1cm][l]{\etocnumber}}%
- \etocname\EndParWithPagenoInMarginAndLeaders}
- {}
-\etocsetstyle {subsubsection}
- {}
- {\leavevmode\leftskip 4cm\relax }
- {\mdseries\normalsize\llap{\makebox[1.25cm][l]{\etocnumber}}%
- \etocname\EndParWithPagenoInMarginAndLeaders}
- {}
-\etocsetstyle {paragraph}
- {}
- {\leavevmode\leftskip 5.5cm\relax }
- {\mdseries\normalsize\llap{\makebox[1.5cm][l]{\etocnumber}}%
- \etocname\EndParWithPagenoInMarginAndLeaders}
- {}
-\etocsettagdepth {preamble} {none}
-\etocsettagdepth {overview} {part}
-\etocsettagdepth {arbitrarily}{part}
-\etocsettagdepth {surprising} {part}
-\etocsettagdepth {linestyles} {part}
-\etocsettagdepth {globalcmds} {paragraph}
-\etocsettagdepth {custom} {part}
-\etocsettagdepth {tips} {part}
-\etocsettagdepth {code} {none}
-\renewcommand\etoctoprule {\hrule height 3pt\relax }
-\renewcommand\etoctoprulecolorcmd {\color{blue}}
-\renewcommand\etocaftercontentshook
- {\medskip\begingroup \color{blue}\hrule height 3pt \endgroup }
-\etocruledstyle [1]{\Large\bfseries
- \fbox{\makebox[8cm]{A TOC using depth tags}}}
-\sloppy
-\tableofcontents
-\endgroup
-\end{verbatim}
-\endgroup
-
-\subsection{Das TOC als eine Tabelle setzend (die alte Weise)}
-\label{ssec:tocastableold}
-
-%%% ALT TEXT:
-% Tabellenzellen erstellen Gruppen; Definitionen von |\etocname|, |\etocnumber|,
-% |\etocpage| sind lokal gemacht, also wenn die erste Zelle einer Zeile ist, wo
-% die |.toc|-Dateizeile gelesen wird und|\etocname| und |\etocnumber| definiert
-% wird, werden diese Definitionen nach dem Tabularzeichen |&|
-% verloren gehen. Der
-% Quellcode von \etoc beginnt, die "`Anfangs"'- und "`End"'teile der Linienstile
-% zu öffnen oder Gruppen zu schließen, durch ein |&| beispielsweise im
-% "`Präfix"'-Teil des Linienstils ist nicht zu erwarten.
-
-% Weiterhin, ähnlich sieht die Sache der Neudefinition von |\contentsline|, made
-% by \etoc , aus, jedesmal wird ein TOC gesetzt. Es wird nach dem
-% ersten Argument
-% getan, wenn \csb{etocsettocstyle} ausgeführt wurde, weil, wenn dieses Argument
-% eine Tabelle öffnet, die |etoc|-Neudefintion der |\contentsline| in die erste
-% Zelle der ersten Zeile getan werden will und danach verloren geht.
-
-% So, mit dem Öffnen und Schließen mit |\etocsettocstyle| und dem
-% Nehmen von |&| |
-% und | innerhalb eines Level-Stils, kann man nicht direkt ein TOC
-% in eine Tabelle
-% setzen.
-
-% Der \etoc -Quellcode könnte geändert werden, zu machen Modifizierungen von
-% einigen relevanten globalen Definitionen, aber ich habe mich dagegen
-% entschieden. Setzen als eine |tabular| (oder später als |longtable|) wird nur
-% fortgeschrittene Anwendern gesucht und fortgeschrittene Anwender können die
-% Technik einsetzen, die in \autoref{tocastree} erklärt wurden. Hier ist ein
-% Beispiel mit einem vollverlinkten Inhaltsverzeichnis. Der Code kommt nach der
-% Tabelle.
-
-
-\textbf{UEBERSETZUNG NOETIG}
-
-\begin{otherlanguage}{english}
-Due to, among other things, the fact that alignment cells create and close
-groups, and that by default definitions of \csb{etocname}, \csb{etocnumber},
-\csb{etocpage} made by \etoc are local, it was not easy to typeset a TOC as
-table with \etoc, prior to release |1.08|.
-
-Not only \csb{etocname} etc... caused a problem, but also the basic
-redefinition of \csa{contentsline} was made by \etoc only after the
-first argument to \csb{etocsettocstyle} had been executed, hence if this
-argument were to open a tabular, the \etoc redefinition of
-\csa{contentsline} would be done in the first cell of the first row and
-get lost thereafter.
-
-Thus one had to resort to the technique explained in \autoref{tocastree}
-of using the execution of \csa{tableofcontents} as a way to store data
-which was then displayed later.
-
-For the record, here is how the TOC from \autoref{sec:tocastable} was
-coded in the old days. We don't have here the problems with the
-positioning of |\hline|'s we face with the newer method; on the other
-hand we must manipulate token registers which are not familiar to most
-\LaTeX{} users (macros could be used, but would be more cumbersome,
-except perhaps if using the \eTeX{} \csa{unexpanded}).
-
-The method here is the most powerful because it filters out of the
-|.toc| file only the data we want (the other things are not ignored,
-they are executed but hopefully do not create havoc; typically they are
-language changing instructions, or updates to certain counters, etc...),
-and we are less susceptible to fall potential victims of various
-external macros inserted in the |.toc| file by other packages.
-\end{otherlanguage}
-
-
-\begin{verbatim}
-\newtoks\toctabletok
-\newcommand*\appendtotok[2]{% #1=toks variable, #2=macro, expands once #2
- #1\expandafter\expandafter\expandafter {\expandafter\the\expandafter #1#2}}
-
-\newcommand*\PreparePart{%
- \toks0 \expandafter{\etocthelinkednumber}%
- \toks2 \expandafter{\etocthelinkedname}%
- \toks4 \expandafter{\etocthelinkedpage}%
- \edef\toctablepiece {\noexpand\hline
- \noexpand\strut\the\toks0 &\noexpand\bfseries\the\toks2
- &\the\toks4 \noexpand\\\noexpand\hline}%
-}
-\newcommand*\PrepareSection{%
- \toks0 \expandafter{\etocthelinkednumber}%
- \toks2 \expandafter{\etocthelinkedname}%
- \toks4 \expandafter{\etocthelinkedpage}%
- \edef\toctablepiece {\the\toks0 &\the\toks2 &\the\toks4 \noexpand\\}%
-}
-% new version for 1.07k, 2014/03/06
-\newcommand*{\PrepareSubsection}{%
- \toks0 \expandafter{\etocthelinkednumber}%
- \toks2 \expandafter{\expandafter\itshape\etocthelinkedname\strut}%
- \toks4 \expandafter{\expandafter\itshape\etocthelinkedpage}%
- \edef\toctablepiece{&\noexpand\makebox[1cm][c]{\the\toks0}%
- \noexpand\parbox[t]{\dimexpr6cm-\tabcolsep\relax}
- {\noexpand\sloppy\the\toks2}%
- &\the\toks4 \noexpand\\}%
-}
-
-\begingroup
-\etocsetstyle{part}{}{}{\PreparePart \appendtotok\toctabletok\toctablepiece}{}
-
-\etocsetstyle{section}{}{}{\PrepareSection \appendtotok\toctabletok\toctablepiece}{}
-
-\etocsetstyle{subsection}{}{}{\PrepareSubsection\appendtotok\toctabletok\toctablepiece}{}
-
-\etocsettocstyle
- {\toctabletok{\hypersetup{hidelinks}%
- \begin{longtable}{|>{\bfseries}c|p{7cm}|r|}\hline
- \multicolumn{3}{|c|}{\Large\bfseries\strut TABLE OF CONTENTS}%
- \\\hline\hline}}
- {\global\toctabletok\expandafter{\the\toctabletok\hline\end{longtable}}}
-\etocsettocdepth {subsection}
-\tableofcontents
-\the\toctabletok
-\endgroup
-\end{verbatim}
-
-\subsection{Kompatibilität mit anderen Paketen}
-\label{etocaftertochook}
-
-% JFBU modifiziert Januar 23, 2015
-Die Inhalte der |.toc|-Datei (falls bereits vorhanden) werden einmal in den
-Speicher von \etoc getan, bei |\begin{document}|. \footnote{Neu mit |1.07m|.
- Früherer Versionen benutzten die |.toc|-Datei bei
- \csa{usepackage\{etoc\}}. Danke an Denis Bitouzé für ein Babel-etoc
- Problem entdecken zu haben.}
-
-\begin{framed}
- Man sollte \etoc \emph{nach} \texttt{babel} laden.
-\end{framed}
-
- Die |.toc|-Datei bleibt für andere Pakete nutzbar für
- Lesevorgänge bis zum Ort des ersten Inhaltsverzeichnisses, zu diesem
- Zeitpunkt wird ein Schreib-stream durch \etoc geöffnet und von diesem Punkt
- aus wird die Datei gelöscht bis ihr Inhalt wieder auf die Platte von
- \LaTeX{} am Ende der Kompilierung geschrieben wurde.
-
-\etoc lädt das Paket |multicol|.
-
-\etoc erwartet die Sektionierungseinheiten des Dokuments, um ihre Daten in eine
-Datei mit der Endung |.toc| zu schreiben, in Form von Linien, die enthalten den
-\csa{contentsline}-Befehl und dessen Argumente.
-\textbf{UEBERSETZUNG NOETIG}
-\begin{otherlanguage}{english}
- \etoc requires the |.toc| file to use the |\contentsline| macro (possibly
- patched by other packages). It is thus incompatible with the |beamer| class.
- However, if |beamer| is used in an article mode, i.e., with the article
- class in conjunction with the |beamerarticle| package, then \etoc should
- work.
-\end{otherlanguage}
-
-Es ist |hyperref| bekannt und hoffentlich kompatibel mit ihm: die Macros
-\csa{etocname}, \csa{etocnumber} und \csa{etocpage} enthalten die
-|hyperref|-Links, wenn vorhanden (Beachten Sie, dass die
-\emph{linktoc=all}-Option von |hyperref| mitteilt, dass ein Link zur
-Seitenzahl zu setzen ist, für ein einen toc-Eintrag.). Beispielsweise sind die
-Inhaltsverzeichnisse des vorliegenden Dokuments komplett verlinkt.
-Es ist kein Thema, ob \etoc vor oder nach |hyperref| geladen wird.
-
-Die Release |1.07k| fügt Kompatibilität mit dem Paket |tocloft| hinzu:
-\footnote{\url{http://ctan.org/pkg/tocloft}} Schritte wurden getan, um eine Neudefinition
-von |\tableofcontents| zu vermeiden, getan von |tocloft| an |\begin{document}|.
-%
-
-Solange \etoc ungeschickt ist im Kompatibilitätsmodus, wird von |tocloft| die
-Anpassung sowohl für den Lin ienstil als auch den TOC-Titel getan. Man kann
-immer noch von den \emph{tiefen Tags}-Management mit \etoc profitieren, von
-seinem |\localtableofcontents|, von seinem |\label+\ref|-Mechanismus. Man kann
-|\etocsetstyle| nehmen, um mit \etoc das Layout des TOC zu definieren und dann
-eher |tocloft| für etwas anderes, wenn auf |\tableofcontents| folgen
-\csb{etocstandardlines} und \csb{etocstandarddisplaystyle}. In diesem
-Kompatibiltätsmodus |\etocsetlevel{division unit}{6}| wird die gewählte
-Bereichsebene gerendert, aber der Austausch von Ebenen ist andererseits nicht
-möglich.
-\begin{framed}
- Man sollte \etoc \emph{nach} \texttt{tocloft} laden. Sonst wird eine Warnung
- ausgegeben.
-\end{framed}
-
-Die Release |1.07l| hat ebenfalls die Kompatibilität mit der |memoir|-Klasse
-verbessert: Seine |appendix|-Ebene kann mit \etoc gemacht werden. Es ist die
-gleiche Ebene wie wie bei |chapter|, also der Kapitelebenstil kann eventuell ein
-Test für einige boolesche-Ausdrücke sein, die aktiviert sein können via einer
-Instruktion an die |.toc|-Datei aufgenommen werden, wenn man zwei Arten von
-Unterteilungen unterscheidet.
-
-\etoc kann nicht wirklich mit Paketen zusammensein, die
-\csa{tableofcontents}-Befehle ändern: Eine Art Waffenstilstand kann erreicht
-werden, wenn \etoc zuletzt geladen wird, daher ist es der Gewinner.
- \begin{framed}
- Ändern Sie nicht den |\tableofcontents|-Befehl, wie diesen folgenden:
- \centeredline{|\let\oldtableofcontents\tableofcontents|,}
- \centeredline{|\renewcommand\tableofcontents{\oldtableofcontents\mystuff}|,}
- da dies den |\label/\ref|-Mechanismus unmöglich macht. Sie können vielmehr
- \centeredline{|\renewcommand\etocaftertochook{\mystuff}|} ausführen und es
- ergibt auch \csb{etocaftercontentshook}, das führt ein bisschen eher
- \footnotemark{} aus, gerade vor dem Schließen des Teils vom toc-Anzeigestil
- (und damit innerhalb einer Gruppe).
- \end{framed}
-\footnotetext{Im Gegensatz zu \csa{etocaftertochook},
- \csa{etocaftercontentshook} wird nicht ausgeführt, wenn |tocdepth| das
- Drucken des TOC nicht ermöglicht.}
-
-\etoc zu verwenden, kann unvereinbar sein mit dem Paket
-|tocvsec2|\footnote{\url{http://ctan.org/pkg/tocvsec2}}; jetzt lebt es ,
-sortierend, wie es deaktiviert die Modifikationen des |\tableofcontents| durch
-|tocvsec2| (getan im Stile von oben) und es kanzelt auch andere |toc|-bezogene
-Macros, aber es reimplantiert partiell ihre Funktionalität mit
-\csb{etocsettocdepth.toc}. In der Art und Weise, die letzten beiden \LaTeX-Läufe
-sind für das erneute Nehmen des Befehls in einem Dokument notwendig, um einen
-Effekt im Inhaltsverzeichnis zu haben.
-
-Wenn ein \localtoc durch den Nutzer in das Dokument aufgenommen wird, eine
-Zeile, in einen inneren \etoc-Befehl und eine Identifikationszahl in die
-|.toc|-Datei aufgenommen wird. Das korrekte Inhaltsverzeichnis wird nur nach dem
-nächsten \LaTeX -Lauf angezeigt werden.
-
-Es ist möglich (unter Verwendung des Pakets|tocloft| beispielsweise), im
-gesamten Dokument die Makros \csa{l@section}, \csa{l@subsection} \ldots{} zu
-benutzen und der Effekt wird im nächsten Inhaltsverzeichnis durch den
-Kompatibilitätsmodus von \etoc sichtbar werden.
-
-\textbf{UEBERSETZUNG NOETIG}
-
-\begin{otherlanguage}{english}
-It is possible to use simultaneously \etoc and
-{\color{niceone}|tableof|}\footnote{\url{http://ctan.org/pkg/tableof}}. Release
-|1.08| of \etoc requires at least version |1.4a| of |tableof|. If
-\csb{etocglobaldefs} is put in the preamble, this must be after the loading of
-package |tableof|. {\color{niceone}|tableof|} command \csa{nexttocwithtags}
-should work as expected.
-
-{\color{niceone}|tableof|} commands \csa{tableof}, \csa{tablenotof}, ... will
-typeset the (a priori global) table of contents according to the document
-class defaults, obeying the \etoc depth tags; as explained in the |tableof|
-documentation they do not typeset a TOC title. They should \emph{not} be used
-in case \csb{etocglobaldefs} was issued before, except if its scope has been
-terminated since then, or \csb{etoclocaldefs} has cancelled its influence.
-\end{otherlanguage}
-
-\subsection{\TeX -nische Sachen}
-
-Die \csa{etocname}, \csa{etocnumber}, \csa{etocpage} Befehle sind gegen
-vorzeitige Expansion geschützt. Sie enthalten geeignete |hyperref|-Links, wenn
-das Paket |hyperref| geladen und aktiviert für das TOC ist. Die Befehle
-\csa{etoclink} und \csa{etocifnumbered} sind auch gegen vorzeige Expansion
-geschützt.
-
-Andererseits \csa{etocthename}, \csa{etocthenumber}, \csa{etocthepage}, haben
-keine Anbindung an |hyperref|-Links und sind nicht gegen Expansionen geschützt.
-
-Befehle wie \csa{etocsetstyle}, \csa{etocsetlevel}, \csa{etocsettocstyle},
-\csa{etocmulticolstyle}, \csa{etocruledstyle}, \csa{etocframedstyle} folgen
-Gruppierungen von \LaTeX. Alle TOCs werden in Gruppierungen gesetzt.
-
-\subsection{Fehler und Katastrophen}
-
-Nach der Verwendung von \csa{etocsetstyle}für eine Ebene nehmen die restlichen,
-nicht angepassten Ebenen die Standardstile von \etoc (diejenigen, die aktiviert
-werden von \csa{etocdefaultlines}). Man muss sicherstellen, dass alle Ebenen,
-die für das nächste Inhaltsverzeichnis gebraucht werden, miteinander kompatibel
-sind: Insbesonders, dass die Standardlinienstile jeweils im "`vertikalen Modus"'
-gestartet werden.
-
-Wenn man mehrere \toc-Befehle in einem Dokument verwendet, sollte man sich
-hüten, mehrere Satzanweisungen in der |.toc|-Datei zu addieren, so sie mit \toc
-ausgeführt für alle TOCs ausgeführt werden: Auch für \localtoc spielt es keine
-Rolle, ob die Anweisungen Material außerhalb des Anwendungbereichs betreffen,
-sie werden sie trotzdem erhalten. Falls unbedingt erforderlich (aber es das
-sollte es nie) müssen dies Instruktionen so sein, dass einfach aktiviert oder
-deaktiviert werden von der Dokumentquelle, wie es sein muss.
-
-So wie es üblich ist bei TOCs und Labels, muss nach jeder Änderung \LaTeX{} eine
-bestimmte Anzahl von Durchführungen haben, um für das Dokument das endgültige
-Aussehen zu erhalten (mindestens zweimal durchlaufen).
-
-
-
-\clearpage
-\etocdepthtag.toc {code}
-
-\part{Der Code}
-
-\section{Zeitstempel}
-
-Dies ist die deutsche Dokumentation von \texttt{\etocDEdocdate}, erzeugt von der
-Quelldatei mit dem Stempel \texttt{\etocdtxtimestamp}. Die dokumentierte
-Paketversion ist \texttt{\etocDEpkgversion} von \texttt{\etocDEpkgdate}.
-
-% STOP GERMAN (DEUTSCH) VERSION
-
-^^Afi
-
-^^Acatcode92 0
-
-\catcode1 13
-
-\begingroup
-\renewcommand\lowast{{\normalsize\raisebox{-.4\height}{*}}}
-\small
-
-\ifnum\ForEnglish=1
- \section{Change history}
-\fi
-
-\ifnum\ForDeutsch=1
- \section{Änderungen}
-\fi
-
-\selectlanguage{english}
-
-\setlength{\columnsep}{\etoccolumnsep}
-
-\makeatletter
-
-% 27 avril 2014 un petit hack pour hyphénation (éventuelle) en allemand
-% j'ai déjà ~ qui sera de catcode 0, cependant il faudrait aussi les accolades,
-% donc finalement pour aller vite, je rends le + actif. Je modifie aussi le test
-% fait par \jfverbaspace (n'ayant pas commenté mon code, j'ai dû réfléchir pour
-% me rappeler à peu près ce que c'était censé faire).
-
-\def\jfverbatim{\@beginparpenalty \predisplaypenalty
- \parindent \z@
- \parfillskip \@flushglue
- \parskip \tw@\p@ plus 1fil\relax
- \let \do \@makeother \dospecials \makestarlowast \catcode`+ \active
- \begingroup\lccode`~`+
- \lowercase{\endgroup\def~[##1]{\foreignlanguage{ngerman}{##1}}}%
- \catcode`^ \active
- \begingroup\lccode`~`^
- \lowercase{\endgroup\def~{\nopagebreak}}% ajouté 2014/04/28, oblige à un peu
- % plus de mark-up cependant
- \catcode`\~\z@
- \footnotesize\normalfont\baselineskip10pt\relax
- \frenchspacing \obeyspaces \jf@xverbatim }
-
-\begingroup
-\catcode `|=0 \catcode `[= 1 \catcode`]=2
-\catcode `\{=12 \catcode `\}=12 \catcode`\\=12
-|long|gdef|jf@xverbatim#1\end{jfverbatim}[#1|end[jfverbatim]]
-|endgroup
-
-\def\endjfverbatim{}
-
-\newdimen\jfverbadim
-
-\everypar{\leftskip\jfverbadim\bgroup
- \def\par{\egroup\jfverbadim\z@\@@par}%
- \def\jfverbaspace#1{\if\@sptoken\string#1\unskip\else\ \fi#1}}
-
-\begingroup\obeyspaces\def\x{\endgroup%
-\def {\ifvmode\advance\jfverbadim.5em\relax\else\expandafter\jfverbaspace\fi}}\x
-
-\makeatother
-
-\begin{multicols}{2}
-\begin{jfverbatim}
-v1.08 [2015/03/10]^
-
- \etocskipfirstprefix may now appear anywhere in the <start>
- part of a level style.
-
- New commands \etociffirst, \etocxiffirst, \etocxifnumbered.
-
- It is now possible to issue line style specifications directly
- with & and \\ tokens, in order to typeset a TOC as a tabular
- or longtable with the opening for example in the first
- argument of \etocsettocstyle and the closing in its second
- argument.
-
- It is mandatory for such uses to issue \etocglobaldefs which
- tells etoc to proceed globally for certain definitions. This
- is also useful in the context of the inline environments of
- package enumitem.
-
- On this occasion, various old parts of the code have been
- improved.
-
-
-v1.07n [2015/03/05]^
-
- No more use of \toks@ when etoc constructs \etocthelinkedname
- etc... Thus \toks@ can be put in the line styles in order to
- accumulate information. Only useful if it is certain nothing
- else will change \toks@ either.
-
- In the documentation: list of main commands now in alphabetic
- order.
-
-
-v1.07m [2015/01/23]^
-
- Reading of .toc file is delayed to \begin{document} to account for
- possible Babel active characters used therein. Thanks to Denis
- Bitouzé who reported a Babel related problem.
-
- Improved global toc display emulation under KOMA-script classes.
-
- New command \etocbeforetitlehook. New command \etocdisplay.
-
-
-v1.07l [doc of 2014/04/29]^
-
- Added to the documentation an example of use of \etocthelinkedname together
- with an enumitem inline itemize* environment; moved main TOC to immediately
- after the title, and license to the first pages.
-
- Incorporation of the translation into German done on the initiative of
- +[Christine Römer] by +[Felix Baral-Weber, Jenny Rothkrämer-Vogt, Daniel
- Büttner, Claudia Dahl, Christian Otto and Christine Römer (FSU Jena).] My
- grateful thanks to all!
-
-
-v1.07l [2014/04/22]^
-
- Fixes a bug with the 1.07k compatibility layer with tocloft which had broken
- the 1.07k (sic) compatibility with memoir (yes, memoir class 1.07k testing
- had been done before adding the tocloft thing to the source code . . . ).
- Also, etoc when detecting tocvsec2 now checks if this is under the memoir
- class, as then nothing special needs to be done to rescue \tableofcontents,
- contrarily to the situation with the native tocvsec2.
-
-
-v1.07k [2014/03/06]^
-
- Compatibility with package tocloft; and improved compatibility with
- class memoir. Novel TOC example in Overview.
-
-
-v1.07j [2013/12/03]^
-
- Some issues with the documentation formatting (now two-sided) have been
- addressed, and a novel documentation section ``Typesetting the TOC as a
- table'' has been added. Very minor code change (\Etoc@readtoc).
-
-
-v1.07i [2013/10/21]^
-
- Changes to the \etocmulticolstyle and \etocruledstyle codes
- to lessen the risk of a page break after the title (in the one-column case).
-
-
-v1.07h [2013/10/16]^
-
- New commands \etocdepthtag.toc, \etocsettagdepth, \etocobeydepthtags,
- \etocignoredepthtags.
-
-
-v1.07g [2013/10/13]^
-
- New commands \etocsettocdepth, \etocsettocdepth.toc,
- \etocobeytoctocdepth, \etoc~-ignoretoctocdepth which
- emulate part of tocvsec2 functionality ; measures to
- make tocvsec2 partially compatible with etoc.
-
- New commands \etocsetnexttocdepth, \invisibletableofcontents,
- \invisiblelocaltableofcontents.
-
- Switched from tikz-qtree to forest for the first `toc as
- tree' example.
-
- Command names are linked to their descriptions, and many
- other changes in the documentation.
-
- Removed printing of temporary message when the local toc
- id is not yet stabilized; indeed \localtableofcontents
- can have many uses, such as filling up some token list
- register and one may wish to not have anything typeset,
- even in an intermediate run.
-
- All of tex etoc.dtx, etex etoc.dtx, xetex etoc.dtx, latex
- etoc.dtx, pdflatex etoc.dtx are now possible, and the
- extracted file etoc.tex allows easy customization of
- compilation options for the documentation (default is via
- dvipdfmx which produces the smallest file).
-
-
-v1.07f [2013/03/07]^
-
- New macros \etocthelinkedname, \etocthelinkednumber,
- \etocthelinkedpage, and \etocthelink.
-
-
-v1.07e [2013/03/01]^
-
- Improvements in the package own line styles with
- regards to penalties and vertical spaces.
-
- Addition to the documentation of an example of
- a tree-like table of contents (uses tikz).
-
- More such examples added 2013/03/03.
-
-
-v1.07d [2013/02/24]^
-
- Minor code improvements and new documentation
- section ``Another compatibility mode''.
-
-
-v1.07b [2013/02/02]^
-
- Removal of the \xspace from the macros \etocname,
- \etocnumber, \etocpage.
-
- Additional examples in the documentation.
-
-
-v1.07 [2013/01/29]^
-
- New commands:
-
- \etocthename, \etocthenumber, \etocthe~-page, \etoclink,
-
- \etoctoccontentsline, \etoctoccontentsline~lowast
-
- \etocnopar, \etocaftercontentshook
-
- Modified command: \etocmulticolstyle
-
- New documentation section ``Surprising uses of etoc'' which
- explains how to do ``Lists of arbitrary things'', in
- addition to the tables of contents.
-
-
-v1.06 [2012/12/07]^
-
- The standard macros \l@section etc... are modified only
- during the calls to \tableofcontents; they can thus be
- customized as will by the user (with the help of a
- package like tocloft) and this will be taken into account
- by etoc for the TOCs typeset in compatibility mode.
-
-
-v1.05 [2012/12/01]^
-
- \localtableofcontents replaces \tableofcontents~lowast (for
- compatibility with the memoir class).
-
- Compatibility with KOMA-script and memoir document
- classes.
-
-
-v1.04 [2012/11/24]^
-
- A (possibly local) table of contents can be labeled:
-
- \tableofcontents \label{toc:1}
-
- and reproduced elsewhere in the document (with a possibly
- completely different layout):
-
- \tableofcontents \ref{toc:1}
-
-
-v1.02 [2012/11/18]^
-
- Initial version.
-
-\end{jfverbatim}
-\end{multicols}
-\endgroup % group for modified verbatim printing of the changes log
-
-\makeatletter
- \let\check@percent\original@check@percent
-\makeatother
-
-\small
-
-\ifnum\ForEnglish=1
-\section{Implementation}
-\fi
-
-\ifnum\ForDeutsch=1
-\section{Ausführung}
-\fi
-
-\indent % !!!!!!!!!!!!!!!!! Lundi 09 mars 2015 à 09:32:22
-% PUTAIN DE BORDEL DE MERDE AVEC CES \trivlist
-% il faut faire un paragraphe après \section sinon pas d'espacement
-% vertical en sortie de blocs macrocode. Pas évident à trouver, vu que
-% je customisais différentes choses qui pouvaient affecter macrocode.
-
-% 9 mars 2015
-% Pour rappel on avait dans le préambule:
-% \def\MacroFont{\ttfamily\small\hyphenchar\font45 \baselineskip11pt\relax}
-% ce qui donne donc le \macro@font qui sera utilisé.
-
-
-
-\StopEventually{\normalsize
- \ifnum\NoSourceCode=1
- \ifnum\ForEnglish=1
- \texttt{\parindent 0pt\rightskip 1cm minus 1cm
- This documentation has been compiled without inclusion of the source
- code. To produce the English documentation with source code included:\endgraf
- \ \ \ \ run tex on etoc.dtx or etoc.ins to produce etoc.tex,\endgraf
- \ \ \ \ then thrice latex on etoc.tex, then dvipdfmx on etoc.dvi.\endgraf
- \medskip
- To produce the German documentation with source code included, run tex on
- etoc.dtx or etoc.ins to produce etoc-DE.tex, then edit etoc-DE.tex
- to set \string\NoSourceCode\space to 0, and run latex thrice on etoc-DE.tex
- then dvipdfmx on etoc-DE.dvi\endgraf
- \medskip
- (ignore dvipdfmx warnings, or, in case of problems caused by an old version
- of dvipdfmx, set \string\Withdvipdfmx\space to 0 in etoc.tex or
- etoc-DE.tex, to compile with pdflatex)\endgraf }%
- \fi
- \ifnum\ForDeutsch=1
- \texttt{\hyphenchar\font-1
- \parindent 0pt\rightskip 0.5cm minus 0.5cm \selectlanguage{ngerman}%
- Diese Dokumentation wurde ohne Einbeziehung des Quellcodes erstellt. Um
- die englische Dokumentation mit dem Quellcode zu produzieren, ist
- einzubeziehen: \endgraf
- \ \ \ \ kompilieren tex mit etoc.dtx oder etoc.ins, um etoc.tex zu
- produzieren, \endgraf
- \ \ \ \ dann dreimal latex mit etoc.tex, dann dvipdfmx mit etoc.dvi.\endgraf
- \medskip
- Um die deutsche Dokumentation mit Einbeziehung des Quellcodes zu erstellen,
- ist zu kompilieren tex mit etoc.dtx oder etoc.ins, um etoc-DE.tex zu
- erzeugen, dann ist \string\NoSourceCode\space in etoc-DE.tex auf 0 zu
- setzen, dann ist latex dreimal mit etoc-DE.tex laufen zu lassen, dann
- dvipdfmx mit etoc-DE.dvi.\endgraf
- \medskip
- (Ignorieren Sie dvipdfmx-Warnungen oder, im Falle von Problemen mit einer
- alten Version von dvipdfmx, setzen Sie \string\Withdvipdfmx\space auf 0 in
- etoc.tex oder etoc-DE.tex um dann pdflatex laufen zu lassen.)\endgraf }%
- \fi
- \fi
-\end{document}}
-
-
-% November 2012
-% I don't want to have to type at this location (far from the top of the
-% file) explicitly the package version or version date, as it is
-% inconvenient to have to remember to do this when updating the package.
-% Also, I prefer not to add macros to the |.sty| file giving the package
-% date, name, or version. So I extracted this from the real macrocode
-% environment (leaving out the \init@crossref.)
-
-\makeatletter
-\begingroup
-\topsep\MacrocodeTopsep
-\trivlist\parskip\z@\item[]
-\macro@font
-\leftskip\@totalleftmargin \advance\leftskip\MacroIndent
-\rightskip\z@ \parindent\z@ \parfillskip\@flushglue
-\global\@newlistfalse \global\@minipagefalse
-\ifcodeline@index
- \everypar{\global\advance\c@CodelineNo\@ne
- \llap{\theCodelineNo\ \hskip\@totalleftmargin}}%
-\fi
-\string\NeedsTeXFormat\string{LaTeX2e\string}\par
-\string\ProvidesPackage\string{etoc\string}\par
-\noindent\space [\etocpkgdate\space\etocpkgversion\space\etocpkgdescription]\par
-\nointerlineskip
-\global\@inlabelfalse
-\endtrivlist
-\endgroup
-\makeatother
-
-% The catcode hackery next is to avoid to have <*package> to be listed
-% in the commented source code...
-% (c) 2012/11/19 jf burnol ;-)
-
-\MakePercentIgnore
-
-%
-% \catcode`\<=0 \catcode`\>=11 \catcode`\*=11 \catcode`\/=11
-% \let</none>\relax
-% \def<*package>{\catcode`\<=12 \catcode`\>=12 \catcode`\*=12 \catcode`\/=12}
-%
-%</none>
-%<*package>
-% \begin{macrocode}
-\RequirePackage{multicol}
-\DeclareOption*{\PackageWarning{etoc}{Option `\CurrentOption' is unknown.}}
-\ProcessOptions\relax
-% \end{macrocode}
-% |1.08| suppresses |\ifEtoc@part| and defines |\ifEtoc@skipprefix|. It
-% also defines |\etocglobaldefs|, |\etoclocaldefs| and |\Etoc@global|.
-% \begin{macrocode}
-\newtoks\Etoc@toctoks
-\def\Etoc@par{\par}
-\def\etocinline{\def\Etoc@par{}}
-\let\etocnopar\etocinline
-\def\etocdisplay{\def\Etoc@par{\par}}% 1.07m 2015/01/23
-% \end{macrocode}
-% |\etocglobaldefs| should be used only for special things such as TOC as a
-% table; it should be put in a group to limit its scope. If used in the
-% preamble, it must come \emph{after} |tableof| if the later is loaded too.
-% \begin{macrocode}
-\let\Etoc@global\@empty % 1.08 2015/03/10
-\def\etocglobaldefs{\let\Etoc@global\global\let\tof@global\global}
-\def\etoclocaldefs {\let\Etoc@global\@empty\let\tof@global\@empty}
-\newif\ifEtoc@jj % book
-\newif\ifEtoc@j % part
-\newif\ifEtoc@ % chapter
-\newif\ifEtoc@i % section
-\newif\ifEtoc@ii % subsection
-\newif\ifEtoc@iii % subsubsection
-\newif\ifEtoc@iv % paragraph
-\newif\ifEtoc@v % subparagraph
-\newif\ifEtoc@number
-\newif\ifEtoc@hyperref
-\newif\ifEtoc@parskip % 1.07d
-\newif\ifEtoc@tocwithid
-\newif\ifEtoc@standard
-\newif\ifEtoc@skipprefix % 1.08
-\newif\ifEtoc@isfirst % 1.08
-\newif\ifEtoc@localtoc
-\newif\ifEtoc@skipthisone
-\newif\ifEtoc@stoptoc
-\newif\ifEtoc@notactive
-\newif\ifEtoc@mustclosegroup
-\def\etoc@{\etoc@}
-% \end{macrocode}
-% |1.07g| uses a second counter; this could be avoided, but ok, let's not be
-% that strict.
-% \begin{macrocode}
-\newcounter{etoc@tocid}
-\newcounter{etoc@tocdepth}% 1.07g
-% \end{macrocode}
-% |2015/03/08| Why do I use |jj| in the flags and |minustwo| here? and
-% is there an entity full of forgiveness out there to save my soul even
-% if taking into consideration my use of single and doubled |@|'s ?
-% Although I desperately need to waste time I miraculously decided not
-% to change everything today and thus the somewhat dispendious set-up
-% below is maintained.
-% \begin{macrocode}
-\@ifclassloaded{memoir}{\def\Etoc@minf{-\thr@@}}{\def\Etoc@minf{-\tw@}}
-\def\Etoc@@minustwo@@{-\tw@}
-\let\Etoc@@minusone@@\m@ne
-\let\Etoc@@zero@@ \z@
-\let\Etoc@@one@@ \@ne
-\let\Etoc@@two@@ \tw@
-\let\Etoc@@three@@ \thr@@
-\chardef\Etoc@@four@@ 4
-\chardef\Etoc@@five@@ 5
-\chardef\Etoc@@six@@ 6
-\let\Etoc@localtop\Etoc@@minustwo@@
-\def\Etoc@@minustwo@{minustwo}
-\def\Etoc@@minusone@{minusone}
-\def\Etoc@@zero@ {zero}
-\def\Etoc@@one@ {one}
-\def\Etoc@@two@ {two}
-\def\Etoc@@three@ {three}
-\def\Etoc@@four@ {four}
-\def\Etoc@@five@ {five}
-% \end{macrocode}
-% |1.07g|.
-% \begin{macrocode}
-\expandafter\def\csname Etoc@-3@@\endcsname {-\thr@@}
-\expandafter\let\csname Etoc@-2@@\endcsname \Etoc@@minustwo@@
-\expandafter\let\csname Etoc@-1@@\endcsname \Etoc@@minusone@@
-\expandafter\let\csname Etoc@0@@\endcsname \Etoc@@zero@@
-\expandafter\let\csname Etoc@1@@\endcsname \Etoc@@one@@
-\expandafter\let\csname Etoc@2@@\endcsname \Etoc@@two@@
-\expandafter\let\csname Etoc@3@@\endcsname \Etoc@@three@@
-\expandafter\let\csname Etoc@4@@\endcsname \Etoc@@four@@
-\expandafter\let\csname Etoc@5@@\endcsname \Etoc@@five@@
-\expandafter\let\csname Etoc@6@@\endcsname \Etoc@@six@@
-\let\Etoc@all@@ \Etoc@@five@@
-\let\Etoc@none@@ \Etoc@minf
-% \end{macrocode}
-% Versions earlier than |1.08| did |\Etoc@newlevel| in a quite
-% embarrassing way with an |\edef|.
-% \begin{macrocode}
-\let\Etoc@levellist\@empty
-\def\Etoc@newlevel #1%
-{\expandafter\def\expandafter\Etoc@levellist\expandafter
- {\Etoc@levellist\Etoc@levellist@elt #1}%
-}
-\def\etocsetlevel#1#2{%
- \expandafter\Etoc@newlevel\csname l@#1\endcsname
- \ifcase#2\relax
- \expandafter\let \csname Etoc@#1@@\endcsname\Etoc@@zero@@
- \expandafter\let \csname Etoc@#1@\endcsname\Etoc@@zero@
- \or
- \expandafter\let \csname Etoc@#1@@\endcsname\Etoc@@one@@
- \expandafter\let \csname Etoc@#1@\endcsname\Etoc@@one@
- \or
- \expandafter\let \csname Etoc@#1@@\endcsname\Etoc@@two@@
- \expandafter\let \csname Etoc@#1@\endcsname\Etoc@@two@
- \or
- \expandafter\let \csname Etoc@#1@@\endcsname\Etoc@@three@@
- \expandafter\let \csname Etoc@#1@\endcsname\Etoc@@three@
- \or
- \expandafter\let \csname Etoc@#1@@\endcsname\Etoc@@four@@
- \expandafter\let \csname Etoc@#1@\endcsname\Etoc@@four@
- \or
- \expandafter\let \csname Etoc@#1@@\endcsname\Etoc@@five@@
- \expandafter\let \csname Etoc@#1@\endcsname\Etoc@@five@
- \or
- \expandafter\let \csname Etoc@#1@@\endcsname\Etoc@@six@@
- \else
- \ifnum#2=\m@ne
- \expandafter\let \csname Etoc@#1@@\endcsname\Etoc@@minusone@@
- \expandafter\let \csname Etoc@#1@\endcsname\Etoc@@minusone@
- \else
- \ifnum#2=-\tw@
- \expandafter\let \csname Etoc@#1@@\endcsname\Etoc@@minustwo@@
- \expandafter\let \csname Etoc@#1@\endcsname\Etoc@@minustwo@
- \else
- \PackageWarning{etoc}
- {unexpected value `#2' in \string\etocsetlevel.^^J%
- Should be -2,-1, 0, 1, 2, 3, 4, 5, or 6. Set to 6 (=ignored)}%
- \expandafter\let\csname Etoc@#1@@\endcsname\Etoc@@six@@
-\fi\fi\fi}
-\etocsetlevel{book}{-2}
-\etocsetlevel{part}{-1}
-\etocsetlevel{chapter}{0}
-\etocsetlevel{section}{1}
-\etocsetlevel{subsection}{2}
-\etocsetlevel{subsubsection}{3}
-\etocsetlevel{paragraph}{4}
-\etocsetlevel{subparagraph}{5}
-% \end{macrocode}
-% The first two parameters of |\Etoc@et@hop| are exchanged in |1.08|
-% compared to earlier versions; this is in relation to changes done in
-% |\Etoc@etoccontentsline|.
-% \begin{macrocode}
-\AtBeginDocument{%
-\@ifpackageloaded{parskip}{\Etoc@parskiptrue}{}%
-\@ifpackageloaded{hyperref}{\Etoc@hyperreftrue
- \def\Etoc@et@hop#1#2#3#4#5{#2{#3}{#4}{#5}#1}%
- \long\def\Etoc@gobblesixorfive#1#2#3#4#5#6{}}
- {\def\Etoc@et@hop#1#2#3#4{#2{#3}{#4}#1}%
- \long\def\Etoc@gobblesixorfive#1#2#3#4#5{}}%
-}
-% \end{macrocode}
-% |2015/03/08| One has to be careful about the |Etoc@end@<level>| user
-% defined macros which may close groups. This has always been the reason
-% for the |\global|'s here and elsewhere.
-%
-% |1.08| uses |\Etoc@level| rather than a |#1| which used to be anyhow always
-% the |\Etoc@tmp|. Now |\Etoc@level| is what was called formerly |\Etoc@tmp|
-% in |\Etoc@etoccontentsline|.
-% \begin{macrocode}
-\def\Etoc@setflags {%
- \ifcase \Etoc@level
- \global\Etoc@vfalse
- \global\Etoc@ivfalse
- \global\Etoc@iiifalse
- \global\Etoc@iifalse
- \global\Etoc@ifalse
- \global\Etoc@true
- \or
- \global\Etoc@vfalse
- \global\Etoc@ivfalse
- \global\Etoc@iiifalse
- \global\Etoc@iifalse
- \global\Etoc@itrue
- \or
- \global\Etoc@vfalse
- \global\Etoc@ivfalse
- \global\Etoc@iiifalse
- \global\Etoc@iitrue
- \or
- \global\Etoc@vfalse
- \global\Etoc@ivfalse
- \global\Etoc@iiitrue
- \or
- \global\Etoc@vfalse
- \global\Etoc@ivtrue
- \or
- \global\Etoc@vtrue
- \else
-% \end{macrocode}
-% |2015/03/08| I move up the common assignments.
-% \begin{macrocode}
- \global\Etoc@vfalse
- \global\Etoc@ivfalse
- \global\Etoc@iiifalse
- \global\Etoc@iifalse
- \global\Etoc@ifalse
- \global\Etoc@false
- \ifnum\Etoc@level=\m@ne
- \global\Etoc@jtrue
- \else
- \global\Etoc@jfalse
- \global\Etoc@jjtrue
- \fi
- \fi}
-% \end{macrocode}
-% |1.08| This was originally in |\Etoc@etoccontentsline|, intermixed
-% with the definitions of |\Etoc@contents| and |\Etoc@prefix|. Separated
-% here for clarity of code. One has to be careful that this may close
-% groups. The conditionals are all global. The |\Etoc@level| has been
-% |\global\let| to a |\chardef| variable. The final |\else| of the
-% |\ifcase| assumes none of the |\Etoc@end@..| routines modify it,
-% naturally.
-% \begin{macrocode}
-\def\Etoc@doends {%
- \ifcase \Etoc@level
- \ifEtoc@v \Etoc@end@five\fi
- \ifEtoc@iv \Etoc@end@four\fi
- \ifEtoc@iii\Etoc@end@three\fi
- \ifEtoc@ii \Etoc@end@two\fi
- \ifEtoc@i \Etoc@end@one\fi
- \or
- \ifEtoc@v \Etoc@end@five\fi
- \ifEtoc@iv \Etoc@end@four\fi
- \ifEtoc@iii\Etoc@end@three\fi
- \ifEtoc@ii \Etoc@end@two\fi
- \or
- \ifEtoc@v \Etoc@end@five\fi
- \ifEtoc@iv \Etoc@end@four\fi
- \ifEtoc@iii\Etoc@end@three\fi
- \or
- \ifEtoc@v \Etoc@end@five\fi
- \ifEtoc@iv\Etoc@end@four\fi
- \or
- \ifEtoc@v \Etoc@end@five\fi
- \or
- \else
- \ifEtoc@v \Etoc@end@five \fi
- \ifEtoc@iv \Etoc@end@four \fi
- \ifEtoc@iii\Etoc@end@three\fi
- \ifEtoc@ii \Etoc@end@two \fi
- \ifEtoc@i \Etoc@end@one \fi
- \ifEtoc@ \Etoc@end@zero \fi
- \ifnum \Etoc@level =-\tw@
- \ifEtoc@j \Etoc@end@minusone\fi
- \fi
- \fi
-}
-% \end{macrocode}
-% Heart of \etoc hack into execution of |.toc| file. It MUST be the case
-% that the file contains |\contentsline {<unit>}...| instructions, with
-% the standard meaning of executing |\l@unit| (the hyperref
-% modifications are taken into account). It is the various |\l@unit|'s
-% which are (locally) |\let| to |\Etoc@lxyz| and it is |\Etoc@lxyz|
-% which does the parsing of the arguments in order to extract name,
-% number and page number. Once they are obtained, via the execution of
-% this indirectly hacked |\contentsline|, the code executes the
-% |\Etoc@prefix| and |\Etoc@contents| corresponding to that unit level,
-% according to the user |\etocsetstyle| declarations. Before that the
-% begin part is executed when \etoc first encounters that level
-% coming from a higher one and the end part will be executed when
-% hitting a more important level.
-%
-% |\etocskipfirstprefix| was already part of the very first release of
-% \etoc. Up to |1.07n| it was just an elegant |\@thirdofthree| possibly
-% executed just before a |\@firstoftwo{\Etoc@swa{#1}}{\Etoc@swb{#1}}|
-% line. But this made it impossible for me to execute things afer the
-% |begin| parts.
-%
-% Executing stuff before |begin| is now a potential problem because the user
-% can close some group in the |begin| code (this was in fact impossible in
-% versions |<1.08| because this would have erased the definitions of
-% |\Etoc@contents| and |\Etoc@prefix|). Thus I am not so free now to define
-% things before execution of begin, if I allow people to close a group
-% therein, except if I make them global.
-%
-% The mechanism of |\etocskipfirstprefix| made it impossible to add
-% anything at the end of the |begin| codes. Thus I changed it in |1.08|
-% to simply work with a (global) boolean flag. This gives user the
-% freedom to use |\etocskipfirstprefix| anywhere in the |begin| code and
-% it made room for a delimited macro I called |\etoconlyonfirst|. But
-% then I dropped it in favor of definition of the |\etociffirst|
-% conditional.
-%
-% Macros |\Etoc@swa| and |\Etoc@swb| which did the |\Etoc@et@hop| thing have
-% been suppressed, their effect is incorporated to the end of
-% |\Etoc@etoccontentsline|.
-% \begin{macrocode}
-\def\etocskipfirstprefix {\global\Etoc@skipprefixtrue }
-% \end{macrocode}
-% |2015/03/08| Let's record that |\Etoc@level| used to be called
-% |\Etoc@tmp| in versions earlier than |1.08| (and |\Etoc@tmp| is used
-% in the completely different ulterior |\Etoc@lxyz| context). The code
-% sets it for example to be |\Etoc@section@@| which has been let by
-% |\etocsetlevel| to |\@ne|, thus is always self-terminating in
-% |\ifnum..\fi| contexts.
-% \begin{macrocode}
-\def\Etoc@etoccontentsline #1{%
- \global\expandafter\let\expandafter\Etoc@level\csname Etoc@#1@@\endcsname
- \Etoc@skipthisonefalse
- \ifnum\Etoc@level=\Etoc@@six@@
- \Etoc@skipthisonetrue
- \else
- \ifEtoc@localtoc
- \let\Etoc@next\relax
- \ifEtoc@stoptoc
- \Etoc@skipthisonetrue
- \fi
- \ifnum\Etoc@level<\Etoc@localtop
- \def\Etoc@next{\global\Etoc@stoptoctrue}%
- \Etoc@skipthisonetrue
- \fi
- \ifEtoc@notactive
- \def\Etoc@next{\Etoc@setflags}%
- \Etoc@skipthisonetrue
- \fi
- \Etoc@next
- \fi
- \fi
- \let\Etoc@next\Etoc@gobblesixorfive
- \ifnum\c@tocdepth<\Etoc@level
- \else
- \ifEtoc@skipthisone
- \else
-% \end{macrocode}
-% |1.08| New way to handle the compatibility mode. One has to worry
-% only for the local tables of contents (in inactive state, which still
-% must be parsed for global level flags) but in this case
-% |\Etoc@setflags| was done above already. Earlier method proceeded with
-% dummy empty line styles.
-% \begin{macrocode}
- \ifEtoc@standard\let\Etoc@next\@thirdofthree
- \else
-% \end{macrocode}
-% |2015/03/08| Ever since the first release of \etoc, the code has
-% to be careful that the |\Etoc@end@<level>| user defined macros may
-% close groups. This is the reason why some assignments have to be done
-% globally. The |\let\Etoc@next\Etoc@gobblesixorfive| above could be
-% local, because it is used only in case the stuff below is skipped,
-% inclusive of |\Etoc@doends| which may close groups.
-%
-% Versions |1.08| extracts to a separate macro |\Etoc@doends|. Earlier code
-% did |\global\let\Etoc@next\relax| but we can now give a default |\relax|
-% value to |\Etoc@next| with no need of a |\global| prefix.
-% \begin{macrocode}
- \Etoc@doends
-% \end{macrocode}
-% |1.08| the |\Etoc@next| will (possibly) execute the |begin| code,
-% \emph{before} |\Etoc@contents| and |\Etoc@prefix| get defined,
-% contrarily to what I did in earlier versions. I still reset the flags
-% before execution of the |begin| codes (although the flags are not
-% supposed to be used therein anyhow).
-%
-% Also the \meta{begin} code does |\Etoc@isfirsttrue|.
-% \begin{macrocode}
- \let\Etoc@next\@empty
- \Etoc@global\Etoc@isfirstfalse
-% \end{macrocode}
-% |2015/03/08| If my naming scheme had not been so baroque, I could easily do
-% things in a more concise way here...
-% \begin{macrocode}
- \ifcase\Etoc@level
- \ifEtoc@\else \def\Etoc@next{\Etoc@begin@zero}\fi
- \or
- \ifEtoc@i\else \def\Etoc@next{\Etoc@begin@one}\fi
- \or
- \ifEtoc@ii\else \def\Etoc@next{\Etoc@begin@two}\fi
- \or
- \ifEtoc@iii\else \def\Etoc@next{\Etoc@begin@three}\fi
- \or
- \ifEtoc@iv\else \def\Etoc@next{\Etoc@begin@four}\fi
- \or
- \ifEtoc@v\else \def\Etoc@next{\Etoc@begin@five}\fi
- \else
- \ifnum\Etoc@level=\m@ne
- \ifEtoc@j\else \def\Etoc@next{\Etoc@begin@minusone}\fi
- \else
- \ifEtoc@jj\else \def\Etoc@next{\Etoc@begin@minustwo}\fi
- \fi
- \fi
- \Etoc@setflags
- \Etoc@next
- \let\Etoc@next\@empty
-% \end{macrocode}
-% |1.08|:
-% \begin{enumerate}
-% \item separates the definition of |\Etoc@prefix| and
-% |\Etoc@contents| from the execution of the |end| parts. And it does
-% the definition with some |\csname|'s.
-%
-% \item implements |\etocskipfirstprefix| with a boolean, this is less slick
-% but more flexible than the earlier method.
-%
-% \item defines the |\etociffirst| conditional.
-%
-% \item has |\Etoc@level| rather than |\Etoc@tmp| and thus we can dispense
-% with the |\ifEtoc@part| switch as we will be able to test the equality
-% |\Etoc@level=-1| inside of |\Etoc@lxyz|.
-%
-% \item adds the |\Etoc@global| prefix.
-% \end{enumerate}
-% \begin{macrocode}
- \Etoc@global\expandafter\def\expandafter\Etoc@prefix\expandafter
- {\csname Etoc@prefix@\csname Etoc@#1@\endcsname\endcsname }%
- \Etoc@global\expandafter\def\expandafter\Etoc@contents\expandafter
- {\csname Etoc@contents@\csname Etoc@#1@\endcsname\endcsname }%
- \ifEtoc@skipprefix \Etoc@global\let\Etoc@prefix\@empty\fi
- \global\Etoc@skipprefixfalse
- \fi\fi\fi
-% \end{macrocode}
-% |1.08| modifies the ending to not use the |\Etoc@swa| and |\Etoc@swb|
-% things. With this version, the |\Etoc@next| here is only to gobble
-% everything if it has to (or gobble only the \etoc things, when in
-% compatibility mode).
-%
-% For the record we don't do |\csname l@#1\endcsname| mainly because
-% hyperref patches |\contentsline|.
-%
-% The location where |\Etoc@savedcontentsline| is |\let| to
-% |\contentsline| has been moved with release |1.08| to before the
-% title as set by |\etocsettoctyle|, thus it is now possible to open a
-% tabular in this part. And with the |\Etoc@global| prefix the user may
-% opt for global definitions of |\etocname| and the like, thus use
-% freely |&| and other group closing things. Also, some care has been
-% put into doing only expandable things after expansion of the
-% \meta{prefix} and \meta{contents} parts of a sectioning unit style.
-% \begin{macrocode}
- \Etoc@next
- \Etoc@et@hop{\Etoc@prefix\Etoc@contents}{\Etoc@savedcontentsline{#1}}%
-}
-% \end{macrocode}
-% |2013/03/07|:
-%
-% Up to |1.06| \etoc defined only \csa{etocname}, \csa{etocnumber} and
-% \csa{etocpage}. The |hyperref| added data is recycled in the simplest manner,
-% prefixing it with \csa{leavevmode}. The included \csa{Hy@tocdestname} is left
-% unexpanded. We have to spend some time with delimited macros to
-% dis-entangle the |.toc| data, and reconstruct the possible |hyperref|
-% data. If
-% the page number is not hyperlinked, \csa{etocpage} does \emph{not} add the
-% link found possibly in the name.
-%
-% Then |1.07| added \csa{etocthename}, \csa{etocthenumber}, \csa{etocthepage}
-% which are left fragile and do not have the links data, and
-% \csa{etoclink}\marg{linkname} which is robust and reconstructs an arbitrarily
-% named link. A need (for things like building up a token list to be used in a
-% |tikzpicture|) arose later to have some form of the link which could be saved
-% by a simple command like one can do |\global\let\lastname\etocthename|, and
-% avoid having to manipulate \csa{Hy@tocdestname}. So |1.07f| adds
-% \csa{etocthelinkedname}, \csa{etocthelinkednumber}, \csa{etocthelinkedpage},
-% \csa{etocthelink}: they use \csa{hyperlink} with an expanded
-% \csa{Hy@tocdestname}.
-%
-% One could now define \csa{etocname}, etc ... to be the robust versions of
-% \csa{etocthelinkedname}, etc ..., but the original definitions are kept by
-% sentimentalism. |1.07f| also adds \csa{leavevmode} to \csa{etoclink} which
-% should have been done earlier, as it was included in \csa{etocname} etc...
-%
-% attention, \csa{@namedef}|{A}{B}| and not \csa{@namedef}|{A} {B}| !!
-% on the other hand this gives a simple way to insert a space as the first
-% token in the paramaters. For \csa{Etoc@again} (which appears later in the
-% code), a \csa{@firstofone} construct is however the simplest of all.
-%
-% |2015/03/09|: |1.08| adds |\Etoc@global| prefix.
-% \begin{macrocode}
-\def\Etoc@lxyz #1#2{%
- \Etoc@global\@namedef {etoclink }{\leavevmode}% fall-back
- \Etoc@global\let\etocthelink \@empty % fall-back
- \Etoc@global\@namedef {etocname }{\leavevmode #1}% fall-back (perhaps linked)
- \Etoc@global\def\etocthename {#1}% (if link, will be removed later)
- \Etoc@global\def\etocthelinkedname {#1}% will probably get redefined
- \Etoc@global\@namedef {etocpage }{\leavevmode #2}% (perhaps linked)
- \Etoc@getthepage #2\etoc@ % defines also \etocthelinkedpage (and \etoclink)
- \Etoc@getnb #1\relax\relax\etoc@ % gets number *and* name, and \etoclink
- \ifEtoc@number\else
- \ifnum\Etoc@level=\m@ne
- \Etoc@getit #1\hspace\relax\etoc@ % additional job for parts
- \fi
- \fi}
-% \end{macrocode}
-% |1.08| adds the |\Etoc@global|'s.
-% \begin{macrocode}
-\def\Etoc@getthepage #1{%
- \let\Etoc@next\Etoc@getthepage@nohyp
- \ifEtoc@hyperref\ifx #1\hyper@linkstart
- \let\Etoc@next\Etoc@getthepage@hyp
- \fi\fi
- \Etoc@next #1%
-}
-\def\Etoc@getthepage@nohyp #1\etoc@ {%
- \Etoc@global\def\etocthepage {#1}%
- \Etoc@global\def\etocthelinkedpage {#1}%
-}
-% \end{macrocode}
-% |1.07k| corrects a bug here with an extra space before |##1| in
-% |\@namedef{etoclink } ##1|. In 99.99\% of use cases however, the
-% macro gets redefined at a later stage, thus the bug did not show.
-%
-% |1.07n| replaces use of |\toks@| by macro |\Etoc@tmp|. Thus, the user has
-% the (not so recommended) possibility to use |\toks@| in the styles, even to
-% store information whose scope extends beyond the execution of each
-% |\contentsline|.
-%
-% |1.08| adds the |\Etoc@global|'s.
-% \begin{macrocode}
-\def\Etoc@getthepage@hyp #1#2#3#4#5\etoc@ {%
- \Etoc@global\@namedef{etoclink }##1{\leavevmode #1{#2}{#3}{##1}#5}%
- \Etoc@global\edef\etocthelink ##1{\noexpand\hyperlink {#3}{##1}}%
- \Etoc@global\def\etocthepage {#4}%
- \edef\Etoc@tmp {{#3}}%
- \Etoc@global\expandafter\def\expandafter\etocthelinkedpage\expandafter
- {\expandafter\hyperlink \Etoc@tmp{#4}}%
-}
-%
-\def\Etoc@getnb #1{%
- \let\Etoc@next\Etoc@getnb@nohyp
- \ifEtoc@hyperref\ifx #1\hyper@linkstart
- \let\Etoc@next\Etoc@getnb@hyp
- \fi\fi
- \Etoc@next #1%
-}
-%
-\def\Etoc@getit #1{%
- \let\Etoc@next\Etoc@getit@nohyp
- \ifEtoc@hyperref\ifx #1\hyper@linkstart
- \let\Etoc@next\Etoc@getit@hyp
- \fi\fi
- \Etoc@next #1%
-}
-% \end{macrocode}
-% |1.08| adds the |\Etoc@global|'s.
-% \begin{macrocode}
-\def\Etoc@getnb@nohyp #1#2#3\etoc@ {%
- \def\Etoc@getname ##1\relax\relax\etoc@ {%
- \Etoc@global\@namedef {etocname }{\leavevmode ##1}%
- \Etoc@global\def\etocthename {##1}%
- \Etoc@global\def\etocthelinkedname {##1}%
- }%
- \ifx #1\numberline
- \Etoc@global\@namedef {etocnumber }{\leavevmode #2}%
- \Etoc@global\def\etocthenumber {#2}%
- \Etoc@global\def\etocthelinkednumber {#2}%
- \Etoc@global\Etoc@numbertrue
- \Etoc@getname #3\etoc@
- \else % then \etocthename and \etocthelinkedname already defined
- \Etoc@global\@namedef {etocnumber }{\leavevmode}%
- \Etoc@global\let\etocthenumber \@empty
- \Etoc@global\let\etocthelinkednumber \@empty
- \Etoc@global\Etoc@numberfalse
- \fi
-}
-% \end{macrocode}
-% |1.07n| replaces use of |\toks@| by macro |\Etoc@tmp|. |1.08| adds
-% the |\Etoc@global|'s.
-% \begin{macrocode}
-\def\Etoc@getnb@hyp #1#2#3#4#5#6\etoc@ {%
- \Etoc@global\def\Etoc@getname ##1\relax\relax\etoc@ {%
- \Etoc@global\@namedef {etocname }{\leavevmode #1{#2}{#3}{##1}#5}%
- \Etoc@global\def\etocthename {##1}%
- \edef\Etoc@tmp {{#3}}%
- \Etoc@global\expandafter\def\expandafter\etocthelinkedname\expandafter
- {\expandafter\hyperlink \Etoc@tmp{##1}}%
- }%
- \def\Etoc@getnbr ##1##2##3\etoc@ {%
- \ifx ##1\numberline
- \Etoc@global\@namedef {etocnumber }{\leavevmode #1{#2}{#3}{##2}#5}%
- \Etoc@global\def\etocthenumber {##2}%
- \edef\Etoc@tmp {{#3}}%
- \Etoc@global\expandafter\def\expandafter\etocthelinkednumber
- \expandafter{\expandafter\hyperlink \Etoc@tmp{##2}}%
- \Etoc@global\Etoc@numbertrue
- \Etoc@getname ##3\etoc@
- \else
- \Etoc@global\@namedef {etocnumber }{\leavevmode}%
- \Etoc@global\let\etocthenumber \@empty
- \Etoc@global\let\etocthelinkednumber \@empty
- \Etoc@global\Etoc@numberfalse
- \Etoc@global\def\etocthename {#4}%
- \edef\Etoc@tmp {{#3}}%
- \Etoc@global\expandafter\def\expandafter\etocthelinkedname
- \expandafter {\expandafter\hyperlink \Etoc@tmp{#4}}%
- \fi
- }%
- \Etoc@global\@namedef {etoclink }##1{\leavevmode #1{#2}{#3}{##1}#5}%
- \Etoc@global\edef\etocthelink ##1{\noexpand\hyperlink {#3}{##1}}%
- \Etoc@getnbr #4\relax\relax\etoc@
-}
-% \end{macrocode}
-% |1.08| adds the |\Etoc@global|'s.
-% \begin{macrocode}
-\def\Etoc@getit@nohyp #1\hspace#2#3\etoc@ {%
- \def\Etoc@getname ##1\hspace\relax\etoc@ {%
- \Etoc@global\@namedef {etocname }{\leavevmode ##1}%
- \Etoc@global\def\etocthename {##1}%
- \Etoc@global\def\etocthelinkedname {##1}%
- }%
- \ifx\relax#2\else
- \Etoc@global\@namedef {etocnumber }{\leavevmode #1}%
- \Etoc@global\def\etocthenumber {#1}%
- \Etoc@global\def\etocthelinkednumber {#1}%
- \Etoc@global\Etoc@numbertrue
- \Etoc@getname #3\etoc@
- \fi
-}
-% \end{macrocode}
-% |1.07n| replaces use of |\toks@| by macro |\Etoc@tmp|. |1.08| adds
-% the |\Etoc@global|'s.
-% \begin{macrocode}
-\def\Etoc@getit@hyp #1#2#3#4#5#6\etoc@ {%
- \def\Etoc@getname ##1\hspace\relax\etoc@ {%
- \Etoc@global\@namedef {etocname }{\leavevmode #1{#2}{#3}{##1}#5}%
- \Etoc@global\def\etocthename {##1}%
- \edef\Etoc@tmp {{#3}}%
- \Etoc@global\expandafter\def\expandafter\etocthelinkedname
- \expandafter{\expandafter\hyperlink \Etoc@tmp{##1}}%
- }%
- \def\Etoc@getnbr ##1\hspace##2##3\etoc@ {%
- \ifx\relax##2\else
- \Etoc@global\@namedef {etocnumber }{\leavevmode #1{#2}{#3}{##1}#5}%
- \Etoc@global\def\etocthenumber {##1}%
- \edef\Etoc@tmp {{#3}}%
- \Etoc@global\expandafter\def\expandafter\etocthelinkednumber
- \expandafter{\expandafter\hyperlink \Etoc@tmp{##1}}%
- \Etoc@global\Etoc@numbertrue
- \Etoc@getname ##3\etoc@
- \fi
- }%
- \Etoc@getnbr #4\hspace\relax\etoc@
-}
-% \end{macrocode}
-% placeholder for comments
-% \begin{macrocode}
-\let\etocthename \@empty
-\let\etocthenumber \@empty
-\let\etocthepage \@empty
-\let\etocthelinkedname \@empty
-\let\etocthelinkednumber \@empty
-\let\etocthelinkedpage \@empty
-\let\etocthelink \@empty
-\DeclareRobustCommand*{\etocname} {}
-\DeclareRobustCommand*{\etocnumber}{}
-\DeclareRobustCommand*{\etocpage} {}
-\DeclareRobustCommand*{\etoclink} {}
-\DeclareRobustCommand*{\etocifnumbered}
- {\ifEtoc@number\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}
-\expandafter\let\expandafter\etocxifnumbered\csname etocifnumbered \endcsname
-% \end{macrocode}
-% |1.08| defines |\etociffirst|
-\DeclareRobustCommand*{\etociffirst}
- {\ifEtoc@isfirst\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}
-\expandafter\let\expandafter\etocxiffirst\csname etociffirst \endcsname
-% \begin{macrocode}
-% \end{macrocode}
-% |1.07j| modifies |\Etoc@readtoc|.
-% \begin{macrocode}
-\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
-}
-% \end{macrocode}
-% |1.07m| moves the reading of the toc file At Begin Document. Needed for
-% Babel activated characters.
-% \begin{macrocode}
-\Etoc@toctoks {}% (superfluous, but for clarity)
-\AtBeginDocument{\IfFileExists{\jobname.toc}
- {{\endlinechar=-1
- \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.}}}
-% \end{macrocode}
-% 1.07d: parskip and |\@nobreakfalse| stuff moved to |\Etoc@tableofcontents|
-% \begin{macrocode}
-\def\Etoc@openouttoc{%
- \ifEtoc@hyperref
- \ifx\hyper@last\@undefined
- \IfFileExists{\jobname .toc}
- {\Hy@WarningNoLine
- {old toc file detected, not used; 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
-}
-% \end{macrocode}
-% |1.08| has a new way to handle |\Etoc@standardtrue|.
-%
-% Also the expansion of |\Etoc@levelist| is moved to inside
-% |\Etoc@tableofcontents| as set-up by |\etocsettocstyle|. This opens up
-% the possibility for the user to open a group in the title (for example
-% start a tabular) which would be closed (by the first |&|) sometime
-% later. In combination with |\etocglobaldefs| it will be now much
-% easier to typeset TOC as tables with \etoc!
-% \begin{macrocode}
-\def\Etoc@toctoc{%
- \global\Etoc@vfalse
- \global\Etoc@ivfalse
- \global\Etoc@iiifalse
- \global\Etoc@iifalse
- \global\Etoc@ifalse
- \global\Etoc@false
- \global\Etoc@jfalse
- \global\Etoc@jjfalse
-\the\Etoc@toctoks
-\ifEtoc@notactive\else
- \ifEtoc@v \Etoc@end@five\fi
- \ifEtoc@iv \Etoc@end@four\fi
- \ifEtoc@iii \Etoc@end@three\fi
- \ifEtoc@ii \Etoc@end@two\fi
- \ifEtoc@i \Etoc@end@one\fi
- \ifEtoc@ \Etoc@end@zero\fi
- \ifEtoc@j \Etoc@end@minusone\fi
- \ifEtoc@jj \Etoc@end@minustwo\fi
-\fi}
-% \end{macrocode}
-% placeholder for comments
-% \begin{macrocode}
-\def\etoc@@startlocaltoc#1#2{%
-\let\Etoc@next\relax
- \ifEtoc@localtoc
- \ifEtoc@notactive
- \ifnum #1=#2\relax
- \ifEtoc@jj \Etoc@global\let\Etoc@localtop\Etoc@@minusone@@ \fi
- \ifEtoc@j \Etoc@global\let\Etoc@localtop\Etoc@@zero@@ \fi
- \ifEtoc@ \Etoc@global\let\Etoc@localtop\Etoc@@one@@ \fi
- \ifEtoc@i \Etoc@global\let\Etoc@localtop\Etoc@@two@@ \fi
- \ifEtoc@ii \Etoc@global\let\Etoc@localtop\Etoc@@three@@ \fi
- \ifEtoc@iii \Etoc@global\let\Etoc@localtop\Etoc@@four@@ \fi
- \ifEtoc@iv \Etoc@global\let\Etoc@localtop\Etoc@@five@@ \fi
- \ifEtoc@v \Etoc@global\let\Etoc@localtop\Etoc@@six@@ \fi
- \def\Etoc@next{\global\Etoc@notactivefalse
- \global\Etoc@vfalse
- \global\Etoc@ivfalse
- \global\Etoc@iiifalse
- \global\Etoc@iifalse
- \global\Etoc@ifalse
- \global\Etoc@false
- \global\Etoc@jfalse
- \global\Etoc@jjfalse}%
- \fi
- \fi\fi
-\Etoc@next}
-\let\etoc@startlocaltoc\@gobble
-% \end{macrocode}
-% |1.07g| suppresses the printing of |--unknown etoc ref: run latex again--| as
-% sometimes one uses |\localtableofcontents| to prepare something else, and one
-% does not want any text output even in intermediate runs.
-%
-% Also |1.07g| adds |\etocaftertochook| to help with
-% |\invisiblelocaltableofcontents| (and then I did |\etocsetnexttocdepth|).
-% |1.07h| makes the hook used by |\etocsetnexttocdepth| private.
-% \begin{macrocode}
-\def\Etoc@localtableofcontents#1{%
- \edef\Etoc@tmp{#1}%
- \ifnum\Etoc@tmp<\@ne
- \PackageWarning{etoc}
- {Unknown toc id: run LaTeX to get references right}%
- \let\Etoc@next\@gobble\else\let\Etoc@next\@firstofone\fi
- \Etoc@next
- {\edef\etoc@startlocaltoc##1{%
- \noexpand\etoc@@startlocaltoc{##1}{#1}}
- \Etoc@localtoctrue
- \let\Etoc@localtop\Etoc@@minustwo@@
- \global\Etoc@stoptocfalse
- \global\Etoc@notactivetrue
- \Etoc@tableofcontents}%
- \endgroup\ifEtoc@mustclosegroup\endgroup\fi
- \Etoc@aftertochook % 1.07h
- \etocaftertochook % 1.07g
-}
-% \end{macrocode}
-% |2013/03/07|: I discover a \csa{@namedef} trick to construct the
-% \csa{Etoc@again} space delimited macro:\\
-% | \@namedef {Etoc@again} {...stuff...}|\\
-% Original version was (copied from analogous stuff in |source2e|):\\
-% | {\def\1{\Etoc@again}\expandafter\gdef\1 {...stuff...}}|\\
-% and in the end (now that I think about it) I simply use |\@firstofone|.\par
-% \begin{macrocode}
-\def\Etoc@getrefno #1#2\etoc@ {#1}
-\def\Etoc@getref #1{\@ifundefined{r@#1}{0}{\expandafter\expandafter\expandafter
- \Etoc@getrefno\csname r@#1\endcsname\relax\etoc@}}
-\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}
-% \end{macrocode}
-% Why |\global| for |\Etoc@notactivefalse|? and not for
-% |\Etoc@localtocfalse|. Must think about this, a pity I did not
-% document it when I was young and intelligent ...
-% \begin{macrocode}
-\def\Etoc@t@bleofcontents{%
- \ifx\Etoc@nexttoken\label
- \def\Etoc@next{\expandafter\Etoc@label\@gobble}\else
- \ifx\Etoc@nexttoken\@sptoken
- \let\Etoc@next\Etoc@again\else
- \ifEtoc@tocwithid
- \def\Etoc@next{\Etoc@localtableofcontents{\c@etoc@tocid}}%
- \else
- \ifx\Etoc@nexttoken\ref
- \def\Etoc@next{\expandafter\Etoc@ref\@gobble}%
- \else
- \def\Etoc@next{\Etoc@localtocfalse
- \global\Etoc@notactivefalse
- \Etoc@tableofcontents
- \endgroup
- \ifEtoc@mustclosegroup\endgroup\fi
- \Etoc@aftertochook % 1.07h
- \etocaftertochook % 1.07g
- }%
- \fi
- \fi\fi\fi\Etoc@next}
-% \end{macrocode}
-% |1.07g| for consistency Etoc@ prefix added.
-% \begin{macrocode}
-\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{\arabic{etoc@tocid}}}%
- \Etoc@tocwithidtrue
- \futurelet\Etoc@nexttoken\Etoc@t@bleofcontents}
-% \end{macrocode}
-% |1.07g| defines |\etoctableofcontents| to be able to undo the evil and
-% brutal doings of some packages with |\tableofcontents|.
-%
-% |1.08| patches |tableof|'s influence. Version |1.4a| or later of |tableof|
-% is needed.
-% \begin{macrocode}
-\let\etocaftertitlehook \@empty
-\let\etocaftercontentshook \@empty
-\def\etoctableofcontents{%
- \Etoc@openouttoc
- \Etoc@par
- \begingroup % closed in \Etoc@t@bleofcontents or \Etoc@localtableofcontents
-% \end{macrocode}
-% No need for tableof extra group level, and furthermore
-% it is better to get rid of it if. However I can't do it globally because I
-% want to leave open for the user the possibility (whose interest is quasi nil
-% however) of using directly |\tableof|, |\tablenotof|, ... and not the only
-% reasonable thing which is |\nexttocwithtags{}{}|.
-% \begin{macrocode}
- \let\tof@begingroup\@empty
- \let\tof@endgroup \@empty
- \def\etoc@startlocaltoc##1{\etoc@@startlocaltoc{##1}{\c@etoc@tocid}}%
- \@ifstar
- {\def\Etoc@aftertitlehook{}\Etoc@table@fcontents}
- {\let\Etoc@aftertitlehook\etocaftertitlehook\Etoc@table@fcontents}}
-\let\tableofcontents\etoctableofcontents
-\newcommand*\localtableofcontents{%
- \Etoc@openouttoc
- \Etoc@par
- \begingroup % closed in \Etoc@t@bleofcontents or \Etoc@localtableofcontents
- \let\tof@begingroup\@empty
- \let\tof@endgroup \@empty
- \@ifstar
- {\def\Etoc@aftertitlehook{}\Etoc@localtable@fcontents}
- {\let\Etoc@aftertitlehook\etocaftertitlehook\Etoc@localtable@fcontents}}
-% \end{macrocode}
-% |1.08| moves earlier the definitions of |\Etoc@savedcontentsline| as
-% well as |\Etoc@levellist|. It will thus not be operative to do
-% |\etocsetlevel| from inside the title now. But perhaps it will be
-% easier to deal with tables.
-%
-% Also I remove a big |\@firstofone|, and use rather
-% |\Etoc@gobbletoetoc@| for the gobbling case.
-%
-% Also, |1.08| modifies the code to do only expandable things after
-% |\Etoc@toctoc|, in order to allow opening of an alignment in the first
-% argument and closing in the second. Earlier versions had an
-% |\Etoc@@next| initially set to relax after the first |\Etoc@toctoc|. I
-% was in 2012/2013 quite uneasy with the TeX conditionals hence wanted
-% for safety to move the things for the second invocation of
-% |\Etoc@toctoc| after the |\fi\fi\fi|. I could define an |\afterfififi|
-% macro, but it should be ok as it is done here.
-% \begin{macrocode}
-\long\def\Etoc@gobbletoetoc@ #1\etoc@ {}
-\newcommand\etocsettocstyle[2]{%
-\def\Etoc@tableofcontents
-{%
- \ifnum\c@tocdepth>\Etoc@minf\else
- \expandafter\Etoc@gobbletoetoc@
- \fi
- \etocbeforetitlehook % 1.07m
- \Etoc@storetocdepth % 1.07g
- \let\Etoc@savedcontentsline\contentsline % moved up here 1.08
- \let\contentsline\Etoc@etoccontentsline
- \ifEtoc@standard
- \else % moved here from \Etoc@toctoc (1.08)
- \def\Etoc@levellist@elt####1{\let####1\Etoc@lxyz}%
- \Etoc@levellist
- \let\booknumberline\numberline
- \let\partnumberline\numberline
- \let\chapternumberline\numberline
- \fi
- #1%
- \ifEtoc@parskip\parskip\z@skip\fi %1.07d
- \Etoc@aftertitlehook
- \Etoc@toctoc
- \ifEtoc@tocwithid\else
- \ifEtoc@localtoc
- \ifEtoc@notactive
- \Etoc@localtocfalse
- \global\Etoc@notactivefalse
- \Etoc@toctoc
- \fi
- \fi
- \fi
- \etocaftercontentshook
- #2\@nobreakfalse % 1.07d: \@nobreakfalse moved here
- \Etoc@resettocdepth % 1.07g. moved here from before #2 by 1.08
-% \end{macrocode}
-% |1.08|: necessary if |tableof 1.4a| has been used in global mode and thus
-% was forced to modify globally |\contentsline|. The collateral effect is that
-% \etoc is now forced to reset globally |\contentsline|.
-% \begin{macrocode}
- \ifx\Etoc@global\global\ifx\tof@finish\@empty\else
- \global\let\contentsline\Etoc@savedcontentsline
- \fi\fi
- \@gobble\etoc@
-}% end of \Etoc@tableofcontents definition by \etocsettocstyle
-}
-% \end{macrocode}
-% |2015/03/09| |1.08| hacks the begin parts to update therein the
-% |\ifEtoc@isfirst| flag.
-% \begin{macrocode}
-\def\etocsetstyle{\Etoc@standardfalse\etoc@setstyle}
-\long\def\etoc@setstyle#1#2#3#4#5{%
- \long\expandafter\def
- \csname Etoc@begin@\csname Etoc@#1@\endcsname\endcsname
- {#2\Etoc@global\Etoc@isfirsttrue}%
- \long\expandafter\def
- \csname Etoc@prefix@\csname Etoc@#1@\endcsname\endcsname {#3}%
- \long\expandafter\def
- \csname Etoc@contents@\csname Etoc@#1@\endcsname\endcsname {#4}%
- \long\expandafter\def
- \csname Etoc@end@\csname Etoc@#1@\endcsname\endcsname {#5}%
-}
-% \end{macrocode}
-% placeholder for comments
-% \begin{macrocode}
-\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}
-% \end{macrocode}
-% placeholder for comments
-% \begin{macrocode}
-\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}
-% \end{macrocode}
-% placeholder for comments
-% \begin{macrocode}
-\def\etocbaselinespreadminustwo {1}
-\def\etocbaselinespreadminusone {1}
-\def\etocbaselinespreadzero {1}
-\def\etocbaselinespreadone {1}
-\def\etocbaselinespreadtwo {1}
-\def\etocbaselinespreadthree {.9}
-% \end{macrocode}
-% placeholder for comments
-% \begin{macrocode}
-\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 {\partname}
-\def\etocbookname {Book}
-% \end{macrocode}
-% placeholder for comments
-% The macro \csa{etocdefaultlines} was initially called \csa{etoctoclines}. Now
-% \csa{etoctoclines} just does \csa{Etoc@standardfalse}.
-% Version |1.07e| has rewritten entirely the stuff related to penalties and
-% \csa{addvspace}, as this was not satisfactory in the earlier versions, which
-% were written at a early stage in the development of the
-% package. Actually I am not fully satisfied with these line styles.
-%
-% \begin{macrocode}
-\def\etocdefaultlines{\Etoc@standardfalse %
-%% `book':
-\etoc@setstyle{@minustwo}
- {\addpenalty\@M\etocskipfirstprefix}
- {\addpenalty\@secpenalty}
- {\begingroup
- \etocfontminustwo
- \addvspace{\etocsepminustwo}%
- \parindent \z@
- \leftskip \etocminustwoleftmargin
- \rightskip \etocminustworightmargin
- \parfillskip \@flushglue
- \vbox{\etocifnumbered{\etocbookname\enspace\etocnumber:\quad}{}\etocname
- \baselineskip\etocbaselinespreadminustwo\baselineskip
- \par}%
- \addpenalty\@M\addvspace{\etocsepminusone}%
- \endgroup}
- {}%
-%% `part':
-\etoc@setstyle{@minusone}
- {\addpenalty\@M\etocskipfirstprefix}
- {\addpenalty\@secpenalty}
- {\begingroup
- \etocfontminusone
- \addvspace{\etocsepminusone}%
- \parindent \z@
- \leftskip \etocminusoneleftmargin
- \rightskip \etocminusonerightmargin
- \parfillskip \@flushglue
- \vbox{\etocifnumbered{\etocpartname\enspace\etocnumber.\quad}{}\etocname
- \baselineskip\etocbaselinespreadminusone\baselineskip
- \par}%
- \addpenalty\@M\addvspace{\etocsepzero}%
- \endgroup}
- {}%
-%% `chapter':
-\etoc@setstyle{@zero}
- {\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}}%
-%% `section':
-\etoc@setstyle{@one}
- {\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}}
- {\setbox\tw@\hbox{\etocabbrevpagename\etocpage}}%
- \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}}%
-%% `subsection':
-\etoc@setstyle{@two}
- {\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}}
- {\setbox\tw@\hbox{\etocabbrevpagename\etocpage}}%
- \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}}%
-%% `subsubsection':
-\etoc@setstyle{@three}
- {\addpenalty\@M
- \etocfontthree
- \vspace{\etocsepthree}%
- \noindent
- \etocskipfirstprefix}
- {\allowbreak\,--\,}
- {\etocname}
- {.\hfil
- \begingroup
- \baselineskip\etocbaselinespreadthree\baselineskip
- \par
- \endgroup
- \addpenalty{-\@highpenalty}}%
-% \end{macrocode}
-% placeholder for comments
-% \begin{macrocode}
-\etoc@setstyle{@four}{}{}{}{}%
-\etoc@setstyle{@five}{}{}{}{}%
-} % end of \etocdefaultlines!
-% \end{macrocode}
-% The |\etocinnertopsep| default value is too big as well as |\etocbelowtocskip|
-% and |\etocabovetocskip|, I guess, but if I am remember correctly I chose them
-% to mimick the standard TOC spacings in |article| class.
-% \begin{macrocode}
-\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}
-% \end{macrocode}
-% |1.07i| adds a |\nobreak| before the |\etocinnertopsep| and a test of vertical
-% mode to see if truly adding a |\par| is a reasonable idea, in the
-% case of single-column mode.
-% \begin{macrocode}
-\newcommand\etocmulticolstyle[2][\etocdefaultnbcol]{%
-\etocsettocstyle
- {\let\etocoldpar\par
- \addvspace{\etocabovetocskip}%
- \ifnum #1>\@ne\let\Etoc@next\@firstoftwo
- \else \let\Etoc@next\@secondoftwo\fi
- \Etoc@next{%
- \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\let\Etoc@next\@firstofone
- \else \let\Etoc@next\@gobble\fi
- \Etoc@next{\end{multicols}}%
- \addvspace{\etocbelowtocskip}}}
-% \end{macrocode}
-% placeholder for comments
-% \begin{macrocode}
-\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}
-% \end{macrocode}
-% |1.07i| moves the |\nobreak| to before the |\vskip\etocinnertopsep|
-% (especially important for the single column case).
-% \begin{macrocode}
-\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\let\Etoc@next\@firstoftwo
- \else \let\Etoc@next\@secondoftwo\fi
- \Etoc@next
- {\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\let\Etoc@next\@firstofone
- \else \let\Etoc@next\@gobble\fi
- \Etoc@next{\end{multicols}}%
- \addvspace{\etocbelowtocskip}}}
-% \end{macrocode}
-% |1.07k| defines |\Etoc@relax| and |\etocbkgcolorcmd| as |\long|: the user
-% manual says to use |\renewcommand\etocbkgcolorcmd|, and an |\ifx| test is used
-% in the framed style. It was thus a bug to have non-long definitions before. Or
-% I could have said in the user manual to use |\renewcommand*|, or in
-% |\etocframedstyle| I should test for the two, or I should pause to try to
-% remember about this code and think about it.
-% \begin{macrocode}
-\def\etocframedmphook{\relax}
-\long\def\etocbkgcolorcmd{\relax}
-\long\def\Etoc@relax{\relax}
-% \end{macrocode}
-% placeholder for comments
-% \begin{macrocode}
-\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\let\Etoc@next\@firstoftwo
- \else \let\Etoc@next\@secondoftwo\fi
- \Etoc@next
- {\multicolpretolerance\etocmulticolpretolerance
- \multicoltolerance\etocmulticoltolerance
- \setlength{\columnsep}{\etoccolumnsep}%
- \setlength{\multicolsep}{\etocmulticolsep}%
- \begin{multicols}{#1}}
- {\pretolerance\etocmulticolpretolerance
- \tolerance\etocmulticoltolerance}}
- {\ifnum #1>\@ne\let\Etoc@next\@firstofone
- \else \let\Etoc@next\@gobble\fi
- \Etoc@next{\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}}}
-% \end{macrocode}
-% placeholder for comments
-% \begin{macrocode}
-\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*}
-% \end{macrocode}
-% placeholder for comments
-% \begin{macrocode}
-\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*}
-% \end{macrocode}
-% placeholder for comments
-% \begin{macrocode}
-\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*}
-% \end{macrocode}
-% placeholder for comments
-% \begin{macrocode}
-\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}}
-% \end{macrocode}
-% placeholder for comments
-% \begin{macrocode}
-\def\etocarticlestyle{%
- \etocsettocstyle
- {\section *{\contentsname
- \@mkboth {\MakeUppercase \contentsname}
- {\MakeUppercase \contentsname}}}
- {}}
-\def\etocarticlestylenomarks{%
- \etocsettocstyle
- {\section *{\contentsname}}
- {}}
-% \end{macrocode}
-% placeholder for comments
-% \begin{macrocode}
-\def\etocbookstyle{%
- \etocsettocstyle
- {\if@twocolumn \@restonecoltrue \onecolumn \else \@restonecolfalse \fi
- \chapter *{\contentsname
- \@mkboth {\MakeUppercase \contentsname}
- {\MakeUppercase \contentsname}}}
- {\if@restonecol \twocolumn \fi}}
-\def\etocbookstylenomarks{%
- \etocsettocstyle
- {\if@twocolumn \@restonecoltrue \onecolumn \else \@restonecolfalse \fi
- \chapter *{\contentsname}}
- {\if@restonecol \twocolumn \fi}}
-\let\etocreportstyle\etocbookstyle
-\let\etocreportstylenomarks\etocbookstylenomarks
-\def\etocmemoirtoctotocfmt #1#2{%
- \def\Etoc@addsuitablecontentsline{\addcontentsline {toc}{#1}{#2}}%
- \renewcommand*\etocaftertitlehook{%
- \ifmem@em@starred@listof
- \else\phantomsection\aftergroup\Etoc@addsuitablecontentsline\fi}}
-\def\etocmemoirstyle{%
- \etocsettocstyle
- {\ensureonecol \par \begingroup \@nameuse {@tocmaketitle}
- \Etoc@aftertitlehook\let\Etoc@aftertitlehook\relax
- \parskip \cftparskip \@nameuse {cfttocbeforelisthook}}
- {\@nameuse {cfttocafterlisthook}\endgroup\restorefromonecol}}
-% \end{macrocode}
-% placeholder for comments
-% \begin{macrocode}
-\def\etocscrartclstyle{%
- \etocsettocstyle
- {\let\if@dynlist\if@tocleft
- \def\@currext{toc}% added 1.07m 2015/01/23
- \iftocfeature {toc}{onecolumn}
- {\iftocfeature {toc}{leveldown}
- {}
- {\if@twocolumn \aftergroup \twocolumn \onecolumn \fi }}
- {}%
-% \end{macrocode}
-% |1.07k|: next line to do as within current |scrartcl 2013/12/19 v3.12|
-% KOMA-Script article class.
-% \begin{macrocode}
- \iftocfeature {toc}{numberline}{\def \nonumberline {\numberline {}}}{}%
- \tocbasic@listhead {\listoftocname}%
- \begingroup \expandafter \expandafter \expandafter
- \endgroup \expandafter
- \ifx
- \csname microtypesetup\endcsname \relax
- \else
- \iftocfeature {toc}{noprotrusion}{}
- {\microtypesetup {protrusion=false}%
- \PackageInfo {tocbasic}%
- {character protrusion at toc deactivated}}%
- \fi
- \setlength {\parskip }{\z@ }%
- \setlength {\parindent }{\z@ }%
- \setlength {\parfillskip }{\z@ \@plus 1fil}%
- \csname tocbasic@@before@hook\endcsname
- \csname tb@toc@before@hook\endcsname}
- {\csname tb@toc@after@hook\endcsname
- \csname tocbasic@@after@hook\endcsname}}
-\let\etocscrbookstyle\etocscrartclstyle
-\let\etocscrreprtstyle\etocscrartclstyle
-% \end{macrocode}
-% placeholder for comments
-% \begin{macrocode}
-\def\etocstandarddisplaystyle{\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}}}}
-% \end{macrocode}
-% placeholder for comments
-% \begin{macrocode}
-\def\Etoc@redefetocstyle#1{%
- \renewcommand\etoctocstylewithmarks[4][#1]
- {\etocmulticolstyle[##2]%
- {\csname ##1\endcsname *{##3\etocmarkboth{##4}}}}
- \renewcommand\etoctocstylewithmarksnouc[4][#1]
- {\etocmulticolstyle[##2]%
- {\csname ##1\endcsname *{##3\etocmarkbothnouc{##4}}}}
- \renewcommand\etoctocstyle[3][#1]{%
- \etocmulticolstyle[##2]{\csname ##1\endcsname *{##3}}}}
-\@ifclassloaded{scrartcl}
- {\renewcommand*\etocstandarddisplaystyle{\etocscrartclstyle}}{}
-\@ifclassloaded{book}
- {\renewcommand*\etocfontone{\normalfont\normalsize}
- \renewcommand*\etocstandarddisplaystyle{\etocbookstyle}
- \Etoc@redefetocstyle{chapter}}{}
-\@ifclassloaded{report}
- {\renewcommand*\etocfontone{\normalfont\normalsize}
- \renewcommand*\etocstandarddisplaystyle{\etocreportstyle}
- \Etoc@redefetocstyle{chapter}}{}
-\@ifclassloaded{scrbook}
- {\renewcommand*\etocfontone{\normalfont\normalsize}
- \renewcommand*\etocstandarddisplaystyle{\etocscrbookstyle}
- \Etoc@redefetocstyle{chapter}}{}
-\@ifclassloaded{scrreprt}
- {\renewcommand*\etocfontone{\normalfont\normalsize}
- \renewcommand*\etocstandarddisplaystyle{\etocscrreprtstyle}
- \Etoc@redefetocstyle{chapter}}{}
-% \end{macrocode}
-%|1.07k (2014/03/06)| adds the |appendix| to the list of known levels if class
-%|memoir| is detected.
-% \begin{macrocode}
-\@ifclassloaded{memoir}
- {\etocsetlevel{appendix}{0}%
- \renewcommand*\etocfontone{\normalfont\normalsize}
- \etocmemoirtoctotocfmt{chapter}{\contentsname}%
- \renewcommand*\etocstandarddisplaystyle{\etocmemoirstyle}
- \Etoc@redefetocstyle{chapter}}{}
-% \end{macrocode}
-%|1.07k (2014/03/06)| adds the compatibility with the |tocloft| package; in
-% compatibility mode etoc will obey the |tocloft| customisation for the division
-% headings as well as for the toc title.
-%
-%|1.07l (2014/04/02)| fixes the bug from the |tocloft| compatibility layer which
-%was |memoir| incompatible: |memoir| has its version of |tocloft| which doesn't
-%have the |\if@cftnctoc| boolean.
-% \begin{macrocode}
-\def\etoctocloftstyle {%
- \etocsettocstyle
- {\@cfttocstart\par\begingroup
- \parindent\z@ \parskip\cftparskip \@cftmaketoctitle
- \if@cfttocbibind\@cftdobibtoc\fi }%
- {\endgroup\@cfttocfinish }%
-}
-\@ifclassloaded{memoir}{}
-{\@ifpackageloaded{tocloft}
- {\if@cftnctoc\else
- \renewcommand*\etocstandarddisplaystyle{\etoctocloftstyle}
- \AtBeginDocument{\let\tableofcontents\etoctableofcontents}
- \fi }
- {\AtBeginDocument
- {\@ifpackageloaded{tocloft}
- {\if@cftnctoc\else
- \PackageWarning {etoc}
- {Package `tocloft' was loaded after `etoc'!^^J%
-**** to prevent it from overwriting \protect\tableofcontents, it will be tricked^^J%
-**** into believing to have been loaded with option `titles'. For better^^J%
-**** compatibility, please load `tocloft' before `etoc'}%
- \AtEndDocument{\PackageWarning{etoc}
- {Please load `tocloft' /before/ `etoc'!}}\fi
- \@cftnctoctrue }%
- {}%
- }%
- }%
-}
-% \end{macrocode}
-% placeholder for comments
-% \begin{macrocode}
-\def\Etoc@addtocontents #1#2%
- {\ifEtoc@hyperref
- \addtocontents {toc}{\protect\contentsline
- {#1}{#2}%
- {\thepage }{\@currentHref }}%
- \else
- \addtocontents {toc}{\protect\contentsline
- {#1}{#2}{\thepage }}%
- \fi}
-\def\Etoc@addcontentsline@ #1#2#3%
- {\@namedef{toclevel@#1}{#3}%
- \addcontentsline {toc}{#1}{#2}}
-\DeclareRobustCommand*{\etoctoccontentsline}
- {\@ifstar{\Etoc@addcontentsline@}{\Etoc@addtocontents}}
-% \end{macrocode}
-% All the following added for version |1.07g [2013/10/13]|. Motivated by
-% a demand about |tovsec2|. But it is impossible to make |tocvsec2|
-% compatible, if not re-doing all `toc' macros in |tocvsec2|
-% (|v1.3, 2011/08/07|). I do not retain the stack idea, which does not convince
-% me as useful. The empty line in the |.toc| file is put there by
-% |tocvsec2| (see its code line 143).
-%
-% I take this opportunity to add to the start of the toc file
-% |\let\etoc@startlocaltoc\@gobble| in case |etoc| is not detected, I should
-% possibly have done that long ago (like I did in |tableof|).
-%
-% In |1.07h| I decide that I should not have used |\Etoc@| but |\etoc@| for
-% |\Etoc@settocdepth|. So I now use lowercase and add a temporary line for
-% transition in the very improbable situation that someone actually did already
-% use the just released |1.07g|.
-%
-% In |1.07i| the deactivation of |\etoc@settocdepth| done at the start
-% of the |.toc| file (for the case this file is used after having
-% removed |etoc| from the document, or imported in another document) is
-% done via letting it to |\@gobble| rather than |\count@| (which would
-% not be ok, as what follows would be undefined too). The reason for the
-% |\count@| also used originally in |\etocignoretoctocdepth| is that
-% when I first worked on |1.07g| I possibly had more than one token
-% after |\etoc@settocdepth|, but I changed that later.
-%
-% \begin{macrocode}
-\def\Etoc@storetocdepth {\global\c@etoc@tocdepth\c@tocdepth }
-\def\Etoc@resettocdepth {\global\c@tocdepth\c@etoc@tocdepth }
-\def\etocobeytoctocdepth {\def\etoc@settocdepth
- {\afterassignment\Etoc@@nottoodeep \global\c@tocdepth}}
-\def\Etoc@@nottoodeep {\ifnum\c@tocdepth>\c@etoc@tocdepth
- \global\c@tocdepth\c@etoc@tocdepth\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}}%
-}
-% \end{macrocode}
-% |1.07h| adds the depth tags, and an even more general mechanism could be added
-% at some point: we could insert `action' tags and have the user map them to
-% arbitrary commands. For the time being we just provide
-% |\etocdepthtag.toc {name}| and |\etocsettagdepth {tag_name}{level}| where
-% level is numeric or
-% alphabetical. The numeric
-% level |-3| is now again not accepted by |\etocsetlevel|, it can be used with
-% |\etocsettagdepth| (which accepts equivalently |none|).
-% \begin{macrocode}
-\def\etocdepthtag #1#{\Etoc@depthtag } % \etocdepthtag.toc {name}
-\def\Etoc@depthtag #1{\addtocontents {toc}{\protect\etoc@depthtag {#1}}}
-\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@@}}}%
-}
-% \end{macrocode}
-% We must cancel all |tocvsec2| toc-related actions. But a check must be done
-% for the memoir class, as its |tocvsec2| emulation does not have the
-% incompatible things etoc needs to revert. This extra check added with etoc
-% |1.07l|.
-% \begin{macrocode}
-\def\Etoc@tocvsec@err #1{\PackageError {etoc}
- {the command \protect#1\space is incompatible with etoc}
- {use \protect\etocsettocdepth.toc as replacement (check the manual)}%
-}%
-\AtBeginDocument {%
- \@ifclassloaded{memoir}
- {\PackageWarning{etoc}{You may consider using \protect\etocsettocdepth.toc
- as a drop-in^^J
- replacement to the memoir own \protect\settocdepth\space
- if you wish to exploit etoc to its^^J
- fullest. Similarly consider using
- \protect\etocsettocdepth\space and
- \protect\etocsetnexttocdepth^^J rather
- than memoir's \protect\maxtocdepth.}}
- {\@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{}% % if etoc is added to file previously
- \let\reset@tocdepth\relax % using tocvsec2
- \let\remax@tocdepth\relax
- \let\tableofcontents\etoctableofcontents
- \PackageWarning {etoc}
- {package tocvsec2 detected and its modification of^^J
- \protect\tableofcontents\space reverted. Use
- \protect\etocsettocdepth.toc as a replacement^^J
- for the tocvsec2 toc-related commands}}{}%
- }%
-}%
-% \end{macrocode}
-% |1.07g|
-% \begin{macrocode}
-\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}}
- {\edef\Etoc@aftertochook {\global\c@tocdepth\the\c@tocdepth\space
- \let\noexpand\Etoc@aftertochook\noexpand\@empty }%
- \global\c@tocdepth\csname Etoc@#1@@\endcsname}%
-}%
-% \end{macrocode}
-% |1.07h|. In order for the |.toc| file to be usable without error even
-% without etoc. In |1.07i| use of |\@gobble| for |\etoc@settocdepth|.
-% \begin{macrocode}
-\addtocontents {toc}{\protect\@ifundefined{etoctocstyle}%
- {\let\protect\etoc@startlocaltoc\protect\@gobble
- \let\protect\etoc@settocdepth\protect\@gobble
- \let\protect\etoc@depthtag\protect\@gobble }{}}%
-% \end{macrocode}
-% Initializations.
-% \begin{macrocode}
-\def\etocstandardlines {\Etoc@standardtrue}
-\def\etoctoclines {\Etoc@standardfalse}
-\etocdefaultlines
-\etocstandardlines
-\etocstandarddisplaystyle
-\etocobeytoctocdepth
-\etocobeydepthtags
-\let\Etoc@aftertochook\@empty % private for \etocsetnexttocdepth
-\let\etocaftertochook \@empty % public for end user.
-\let\etocbeforetitlehook \@empty % new with 1.07m
-\endinput
-% \end{macrocode}
-% \MakePercentComment
-\CharacterTable
- {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
- Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
- Digits \0\1\2\3\4\5\6\7\8\9
- Exclamation \! Double quote \" Hash (number) \#
- Dollar \$ Percent \% Ampersand \&
- Acute accent \' Left paren \( Right paren \)
- Asterisk \* Plus \+ Comma \,
- Minus \- Point \. Solidus \/
- Colon \: Semicolon \; Less than \<
- Equals \= Greater than \> Question mark \?
- Commercial at \@ Left bracket \[ Backslash \\
- Right bracket \] Circumflex \^ Underscore \_
- Grave accent \` Left brace \{ Vertical bar \|
- Right brace \} Tilde \~}
-
-\CheckSum{3061}
-
-\csname check@checksum\endcsname
-\Finale
-%%
-%% End of file `etoc.dtx'.
diff --git a/Master/texmf-dist/source/generic/etoc/etoc.ins b/Master/texmf-dist/source/generic/etoc/etoc.ins
deleted file mode 100644
index 7e292525a27..00000000000
--- a/Master/texmf-dist/source/generic/etoc/etoc.ins
+++ /dev/null
@@ -1,77 +0,0 @@
-%%
-%% Package: etoc
-%% Version: 1.08 (2015/03/10)
-%% License: LPPL 1.3c or later (see etoc.dtx)
-%% Copyright (C) 2012-2015 Jean-Francois Burnol <jfbu at free dot fr>
-%% Copyright (C) 2014-2015 Christine Roemer <Christine_Roemer at t-online dot de>
-%% and collaborators for the translation into German of the documentation
-%%
-\def\etocpkgdate {2015/03/10}
-\def\etocdocdate {2015/03/10}
-\def\etocpkgversion {v1.08}
-\def\etocpkgdescription {Completely customisable TOCs (jfB)}
-%% Run tex on this file to extract from etoc.dtx:
-%% etoc.sty, etoc.tex, etoc-DE.tex and README.md
-%%
-%% At least three ways to produce etoc.pdf (method (3) is preferred):
-%% (1) latex etoc.dtx (three times), then dvips, then ps2pdf
-%% (2) pdflatex etoc.dtx (three times)
-%% (3) latex etoc.tex (three times), then dvipdfmx
-%%
-%% Method (3) produces the smallest pdf files.
-%% Options can be set in etoc.tex (and etoc-DE.tex):
-%% - scrdoc class options (paper size, font size, ...)
-%% - with or without source code,
-%% - with dvipdfmx or with latex/pdflatex.
-%%
-%% To produce the German documentation etoc-DE.pdf run tex on etoc.ins
-%% or etoc.dtx to produce etoc-DE.tex, then compile etoc-DE.tex with
-%% latex (thrice) then dvipdmx, or edit the suitable toggle in
-%% etoc-DE.tex to allow compilation to proceed with pdflatex.
-%%
-%% Um etoc-DE.pdf zu erzeugen ist latex dreimal mit etoc-DE.tex laufen
-%% zu lassen, dann dvipdfmx mit etoc-DE.dvi. Im Falle von Problemen
-%% mit dvipdfmx ist \Withdvidpdfmx auf 0 in etoc-DE.tex zu setzen,
-%% dann ist pdflatex dreimal mit etoc-DE.tex laufen zu lassen.
-%%
-%% Installation:
-%%
-%% etoc.sty -> TDS:tex/latex/etoc/etoc.sty
-%% etoc.dtx -> TDS:source/latex/etoc/etoc.dtx
-%% etoc.pdf -> TDS:doc/latex/etoc/etoc.pdf
-%% etoc-DE.pdf -> TDS:doc/latex/etoc/etoc-DE.pdf
-%% README.md -> TDS:doc/latex/etoc/README.md
-%%
-\input docstrip.tex
-\askforoverwritefalse
-\def\etocpkgpreamble{\defaultpreamble^^J\MetaPrefix^^J%
-\string\NeedsTeXFormat{LaTeX2e}^^J%
-\string\ProvidesPackage{etoc}^^J%
-\space[\etocpkgdate\space\etocpkgversion\space\etocpkgdescription]}%
-\generate{\nopreamble\nopostamble
-\file{README.md}{\from{etoc.dtx}{readme}}%
-\usepostamble\defaultpostamble
-\file{etoc.tex}{\from{etoc.dtx}{tex}}%
-\file{etoc-DE.tex}{\from{etoc.dtx}{DEtex}}%
-\usepreamble\etocpkgpreamble
-\file{etoc.sty}{\from{etoc.dtx}{package}}}%
-\catcode32=13\relax% active space
-\let =\space%
-\Msg{************************************************************************}
-\Msg{*}
-\Msg{* To finish the installation you have to move the following}
-\Msg{* file into a directory searched by TeX:}
-\Msg{*}
-\Msg{* etoc.sty}
-\Msg{*}
-\Msg{* To produce the documentation run latex thrice on file etoc.tex}
-\Msg{* (or etoc-DE.tex) and then run dvipdfmx on file etoc.dvi, resp.}
-\Msg{* etoc-DE.dvi}
-\Msg{*}
-\Msg{* Happy TeXing!}
-\Msg{*}
-\Msg{************************************************************************}
-\endbatchfile
-\endinput
-%%
-%% End of file `etoc.ins'.