diff options
author | Karl Berry <karl@freefriends.org> | 2015-03-11 20:25:44 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2015-03-11 20:25:44 +0000 |
commit | 07d6e78b6d566bc3372ad15604fa20a935f0c048 (patch) | |
tree | a200124d779658b63dca422cc93e391fd5ff14ae /Master/texmf-dist/source | |
parent | d78773b1bd9f5d2a52f7c8e0c0bc7ffd96841667 (diff) |
etoc (11mar15)
git-svn-id: svn://tug.org/texlive/trunk@36485 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source')
-rw-r--r-- | Master/texmf-dist/source/generic/etoc/etoc.dtx (renamed from Master/texmf-dist/source/latex/etoc/etoc.dtx) | 2322 | ||||
-rw-r--r-- | Master/texmf-dist/source/generic/etoc/etoc.ins (renamed from Master/texmf-dist/source/latex/etoc/etoc.ins) | 23 |
2 files changed, 1640 insertions, 705 deletions
diff --git a/Master/texmf-dist/source/latex/etoc/etoc.dtx b/Master/texmf-dist/source/generic/etoc/etoc.dtx index 67ad7d51c67..12bb38b9730 100644 --- a/Master/texmf-dist/source/latex/etoc/etoc.dtx +++ b/Master/texmf-dist/source/generic/etoc/etoc.dtx @@ -1,21 +1,23 @@ % -*- coding: utf-8; -*- %<*none> -{\def\doctimestamp {Time-stamp: <05-03-2015 12:32:16 CET>}% +{\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.07n (2015/03/05) +%% 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/05} -\def\etocdocdate {2015/03/05} -\def\etocpkgversion {v1.07n} +\def\etocpkgdate {2015/03/10} +\def\etocdocdate {2015/03/10} +\def\etocpkgversion {v1.08} \def\etocpkgdescription {Completely customisable TOCs (jfB)} %</insfile> %<*none> @@ -32,7 +34,7 @@ \catcode32=13\catcode`\\=12^^Brelax^^A ^^Bfirstofone{^^Bendgroup^^Bdef^^BetocLicense^^A {% Package: etoc -% Version: 1.07n (2015/03/05) +% 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> @@ -56,47 +58,207 @@ % % 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. +% etoc.dvi, etoc-DE.dvi, README.md. % -% Extraction of the package (.sty) and driver (.tex) files: -% - if etoc.ins is present: tex etoc.ins -% - without etoc.ins: tex etoc.dtx -% -% It is also possible to run latex/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 -% -% The other files may be discarded. +% 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. @@ -110,7 +272,7 @@ \NeedsTeXFormat{LaTeX2e} \ProvidesFile {etoc.tex}[Driver for etoc documentation]% \PassOptionsToClass {a4paper,fontsize=11pt,twoside}{scrdoc} -\PassOptionsToPackage {german,english}{babel} +\PassOptionsToPackage {ngerman,english}{babel} \chardef\ForEnglish 1 % (can NOT be both 1..) \chardef\ForDeutsch 0 % \input etoc.dtx @@ -136,7 +298,7 @@ \NeedsTeXFormat{LaTeX2e} \ProvidesFile {etoc-DE.tex}[Driver for etoc German documentation]% \PassOptionsToClass {a4paper,fontsize=11pt,twoside,ngerman}{scrdoc} -\PassOptionsToPackage {english,german}{babel} +\PassOptionsToPackage {english,ngerman}{babel} \chardef\ForEnglish 0 % (can NOT be both 1..) \chardef\ForDeutsch 1 % \input etoc.dtx @@ -146,7 +308,7 @@ %</DEtex>----------------------------------------------------------------------- %<*insfile>--------------------------------------------------------------------- %% Run tex on this file to extract from etoc.dtx: -%% etoc.sty, etoc.tex, etoc-DE.tex +%% 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 @@ -171,10 +333,11 @@ %% %% 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 +%% 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 @@ -182,7 +345,9 @@ \string\NeedsTeXFormat{LaTeX2e}^^J% \string\ProvidesPackage{etoc}^^J% \space[\etocpkgdate\space\etocpkgversion\space\etocpkgdescription]}% -\generate{\nopreamble +\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 @@ -226,7 +391,7 @@ \chardef\NoSourceCode 1 % do not include source code \chardef\ForEnglish 1 \chardef\ForDeutsch 0 \PassOptionsToClass {a4paper,fontsize=11pt,twoside}{scrdoc}% - \PassOptionsToPackage {german,english}{babel}% + \PassOptionsToPackage {ngerman,english}{babel}% \else % latex run is on etoc.tex or etoc-DE.tex \chardef\extractfiles 2 % do not extract files \fi @@ -258,7 +423,9 @@ \string\NeedsTeXFormat{LaTeX2e}^^J% \string\ProvidesPackage{etoc}^^J% \space[\etocpkgdate\space\etocpkgversion\space\etocpkgdescription]}% - \generate{\nopreamble + \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}}% @@ -312,7 +479,7 @@ \makeatletter % 2013/03/07. % This macro allows to conveniently center a line inside a paragraph and still -% use there in \verb or other commands changing catcodes. +% 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 @@ -327,6 +494,9 @@ \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 @@ -336,8 +506,18 @@ % uniformisé finalement, avec quelques exceptions, pour dtx du 3 déc 2013 \def\MacroFont{\ttfamily\small\hyphenchar\font45 \baselineskip11pt\relax} -% mais \verb fait \ttfamily hardcoded!!! (contrairement au -% \verbatim@font de latex) +% 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. @@ -345,6 +525,9 @@ % 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 @@ -406,49 +589,49 @@ % maintenue je ne sais donc pas exactement ce qui se passe. \DeclareFontFamily{T1}{txtt}{\hyphenchar\font 45\relax} -\DeclareFontShape{T1}{txtt}{m}{n}{ %medium +\DeclareFontShape{T1}{txtt}{m}{n}{ %medium <->s*[.96] t1xtt% }{} -\DeclareFontShape{T1}{txtt}{m}{sc}{ %cap & small cap +\DeclareFontShape{T1}{txtt}{m}{sc}{ %cap & small cap <->s*[.96] t1xttsc% }{} -\DeclareFontShape{T1}{txtt}{m}{sl}{ %slanted +\DeclareFontShape{T1}{txtt}{m}{sl}{ %slanted <->s*[.96] t1xttsl% }{} -\DeclareFontShape{T1}{txtt}{m}{it}{ %italic +\DeclareFontShape{T1}{txtt}{m}{it}{ %italic <->ssub * txtt/m/sl% }{} -\DeclareFontShape{T1}{txtt}{m}{ui}{ %unslanted italic +\DeclareFontShape{T1}{txtt}{m}{ui}{ %unslanted italic <->ssub * txtt/m/sl% }{} -\DeclareFontShape{T1}{txtt}{bx}{n}{ %bold extended +\DeclareFontShape{T1}{txtt}{bx}{n}{ %bold extended <->t1xbtt% }{} -\DeclareFontShape{T1}{txtt}{bx}{sc}{ %bold extended cap & small cap +\DeclareFontShape{T1}{txtt}{bx}{sc}{ %bold extended cap & small cap <->t1xbttsc% }{} -\DeclareFontShape{T1}{txtt}{bx}{sl}{ %bold extended slanted +\DeclareFontShape{T1}{txtt}{bx}{sl}{ %bold extended slanted <->t1xbttsl% }{} -\DeclareFontShape{T1}{txtt}{bx}{it}{ %bold extended italic +\DeclareFontShape{T1}{txtt}{bx}{it}{ %bold extended italic <->ssub * txtt/bx/sl% }{} -\DeclareFontShape{T1}{txtt}{bx}{ui}{ %bold extended unslanted italic +\DeclareFontShape{T1}{txtt}{bx}{ui}{ %bold extended unslanted italic <->ssub * txtt/bx/sl% }{} -\DeclareFontShape{T1}{txtt}{b}{n}{ %bold +\DeclareFontShape{T1}{txtt}{b}{n}{ %bold <->ssub * txtt/bx/n% }{} -\DeclareFontShape{T1}{txtt}{b}{sc}{ %bold cap & small cap +\DeclareFontShape{T1}{txtt}{b}{sc}{ %bold cap & small cap <->ssub * txtt/bx/sc% }{} -\DeclareFontShape{T1}{txtt}{b}{sl}{ %bold slanted +\DeclareFontShape{T1}{txtt}{b}{sl}{ %bold slanted <->ssub * txtt/bx/sl% }{} -\DeclareFontShape{T1}{txtt}{b}{it}{ %bold italic +\DeclareFontShape{T1}{txtt}{b}{it}{ %bold italic <->ssub * txtt/bx/it% }{} -\DeclareFontShape{T1}{txtt}{b}{ui}{ %bold unslanted italic +\DeclareFontShape{T1}{txtt}{b}{ui}{ %bold unslanted italic <->ssub * txtt/bx/ui% }{} @@ -464,7 +647,7 @@ \definecolor{BLUE}{RGB}{0,0,255} \colorlet{niceone}{green!35!blue!75} -\usepackage {babel} % german and english options have been passed to babel +\usepackage {babel} % ngerman and english options have been passed to babel \AtBeginDocument { \ifnum\ForEnglish=1 \renewcommand\partname{Part}\fi \addto\captionsenglish{\renewcommand\partname{Part}} @@ -644,19 +827,18 @@ pdfpagemode=UseOutlines} {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 + 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 + 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 -%--------------------------------UEBERSETZUNG \ifnum\ForDeutsch=1 \etocsetstyle{section} {} @@ -676,13 +858,12 @@ pdfpagemode=UseOutlines} \glqq\unhbox\lastnamei{}\grqq~und er hat die Nummer \glqq\unhbox\lastnumberi\grqq. \ifnum\value{mycountii}>0 Der erste - Unterabschnitt heißt + 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 -%-------------------------------/UEBERSETZUNG \etocinline % october 10, 2013. \etocsetnexttocdepth {2}% @@ -711,7 +892,7 @@ pdfpagemode=UseOutlines} \newcommand\starit[1]{\csa{#1\lowast}} \newcommand\staritb[1]{\csb{#1}\lowast} -\hyphenation{toc-depth sec-num-depth} +\hyphenation{toc-depth sec-num-depth con-tents-line} \hyphenation{etoc-tan-dard-lines etoc-de-fault-lines etoc-toc-lines @@ -720,6 +901,7 @@ 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 @@ -756,7 +938,9 @@ etoc-lo-cal-framed etoc-in-line etoc-af-ter-ti-tle-hook etoc-af-ter-con-tentshook -etoc-af-ter-toc-hook} +etoc-af-ter-toc-hook +etoc-skip-first-pre-fix +etoc-only-on-first} \hyphenation{ etoc-font-mi-nus-two @@ -807,6 +991,7 @@ 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 @@ -814,11 +999,9 @@ etoc-framed-mp-hook} % for illustration only. Not to be recommended in general. \setcounter{secnumdepth}{4} -%-------------------------------UEBERSETZUNG \ifnum\ForDeutsch=1 \renewcommand*{\etocabbrevpagename}{S.~} \fi -%-------------------------------/UEBERSETZUNG \begin{document}\rmfamily \thispagestyle{empty} @@ -863,7 +1046,7 @@ etoc-framed-mp-hook} \begingroup \etocsetlevel{subsection}{3} \etocsetlevel{subsubsection}{6} -\tableofcontents \label{toc:main} + \tableofcontents \label{toc:main} \endgroup \phantomsection\addcontentsline{toc}{section}{\abstractname} @@ -937,7 +1120,7 @@ manner: they are made available via the \csb{etocname}, |memoir| classes. Starting with release |1.07k| it is possible to use \etoc concurrently with package |tocloft|. -\section{License, installation} +\section{License} \begingroup\ttfamily\small\hyphenchar\font -1 \parindent0pt @@ -1356,7 +1539,6 @@ The code: \end{verbatim} \section{Linked list of the main package commands} -% 16 octobre \begingroup\raggedcolumns \advance\linewidth18pt @@ -1370,6 +1552,7 @@ The code: \csb{etocdisplay}\par \csb{etocframedstyle}\par \csb{etocframed}\par + \csb{etociffirst}\par \csb{etocifnumbered}\par \csb{etocignoredepthtags}\par \csb{etocignoretoctocdepth}\par @@ -1411,6 +1594,7 @@ The code: \endgroup +\clearpage % 15 octobre, je teste les tags \etocdepthtag.toc {arbitrarily} @@ -1963,17 +2147,15 @@ coding used. % on va plutôt faire un \vspace suffisant, cela sera un moindre mal -\vspace{1cm} +%\vspace{1cm} +\clearpage \etocdepthtag.toc {surprising} \part{Surprising uses of \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 @@ -2773,9 +2955,10 @@ typesetting: \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 (see \autoref{ssec:tocastable}); - there we also will have to issue |\hypersetup{hidelinks}| after having - collected the names, numbers and page numbers in a token list register. +\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} @@ -2958,8 +3141,243 @@ previous \end{verbatim} \end{minipage} -% \vfill\eject +\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} @@ -3057,6 +3475,18 @@ 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}% @@ -3073,37 +3503,35 @@ 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 \marg{prefix} and \marg{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 +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}.) +option \emph{linktoc=all}.) -\subsection{The \csbhyp{etocskipfirstprefix} command} +\subsection{The \csbhyp{etocskipfirstprefix} and \csbhyp{etociffirst} commands} \label{etocskipfirstprefix} +\label{etociffirst} +\label{etocxiffirst} -The chosen |subsubsection| style also uses the command -\csb{etocskipfirstprefix}, which, if present, \emph{must} be -the very last one in the \emph{start} code. It instructs to not -use for the first item the specified ``prefix'' code. +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. -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! \subsection{The \csbhyp{etocnumber} command} \label{etocnumber} @@ -3129,6 +3557,7 @@ 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 @@ -3163,6 +3592,10 @@ 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} @@ -3228,7 +3661,7 @@ which allows to make a link with an arbitrary name. All these commands are fragile. -Example of use\begingroup +Example of \begingroup \etocsetstyle {section} {\begin{itemize*}[itemjoin={{; }}, itemjoin*={{, and }}]} {\global\let\TmpEtocNumber\etocthelinkednumber @@ -3238,13 +3671,13 @@ Example of use\begingroup (\emph{p. \TmpEtocPage})} {\end{itemize*}.}% \etocsetnexttocdepth {section}% - \etocsettocstyle {(a table of contents done as an inline - \texttt{enumitem} environment): }{}% + \etocsettocstyle {a table of contents done as an inline + \texttt{enumitem} environment: }{}% \etocinline\tableofcontents \ref{toc:globalcmds} \endgroup \begin{verbatim} -Example of use\begingroup +Example of \begingroup \etocsetstyle {section} {\begin{itemize*}[itemjoin={{; }}, itemjoin*={{, and }}]} {\global\let\TmpEtocNumber\etocthelinkednumber @@ -3255,12 +3688,40 @@ Example of use\begingroup (\emph{p. \TmpEtocPage})} {\end{itemize*}.}% \etocsetnexttocdepth {section}% - \etocsettocstyle {(a table of contents done as an inline - \texttt{enumitem} environment): }{}% + \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} @@ -3398,6 +3859,7 @@ 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} @@ -3854,6 +4316,8 @@ The code used: \endgroup \end{verbatim} + +\clearpage \etocdepthtag.toc {custom} \part{Using and customizing \etoc} @@ -4353,6 +4817,7 @@ 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} @@ -4691,88 +5156,38 @@ get: \end{verbatim} \endgroup -\subsection{Typesetting the TOC as a table}\label{ssec:tocastable} - -Tabular cells create groups; definitions of |\etocname|, |\etocnumber|, -|\etocpage| made by \etoc are local, thus if the first cell of a row is -where the |.toc| file line is read and |\etocname| and |\etocnumber| -get defined, these definitions will be lost after the tabulation character |&|. -The source code of \etoc does allow the ``begin'' and ``finish'' parts of -the line styles to open or close groups, but the possibility of a group closed -by a |&| for -example in the ``prefix'' part of the line style is not anticipated. - -Another, similar, matter regards the redefinition of |\contentsline| made by -\etoc each time it typesets a TOC. It is done after the first argument to -\csb{etocsettocstyle} has been executed, hence if this argument opens a tabular, -the |etoc| redefinition of |\contentsline| will be done in the first cell of the -first row and get lost thereafter. - -Thus one can not typeset a TOC directly as a tabular, with the opening and -closing specified via |\etocsettocstyle|, and using |&| and |\\| inside the -level styles. - -The \etoc source code could be modified to make some relevant definitions -global, but I decided against it. Typesetting as a |tabular| (or, rather, -|longtable|) will appeal only to advanced users, and advanced users can employ -the technique explained in \autoref{tocastree}. Here is an example, giving again -a fully hyperlinked table of contents. The code follows, after the table. - -\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\\}% -} - -\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 +\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 @@ -4785,8 +5200,7 @@ a fully hyperlinked table of contents. The code follows, after the table. \toks4 \expandafter{\etocthelinkedpage}% \edef\toctablepiece {\noexpand\hline \noexpand\strut\the\toks0 &\noexpand\bfseries\the\toks2 - &\the\toks4 \noexpand\\ - \noexpand\hline}% + &\the\toks4 \noexpand\\\noexpand\hline}% } \newcommand*\PrepareSection{% \toks0 \expandafter{\etocthelinkednumber}% @@ -4805,6 +5219,7 @@ a fully hyperlinked table of contents. The code follows, after the table. &\the\toks4 \noexpand\\}% } +\begingroup \etocsetstyle{part}{}{}{\PreparePart \appendtotok\toctabletok\toctablepiece}{} \etocsetstyle{section}{}{}{\PrepareSection \appendtotok\toctabletok\toctablepiece}{} @@ -4820,6 +5235,7 @@ a fully hyperlinked table of contents. The code follows, after the table. \etocsettocdepth {subsection} \tableofcontents \the\toctabletok +\endgroup \end{verbatim} \subsection{Compatibility with other packages} @@ -4843,9 +5259,19 @@ The |.toc| file remains available 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|. It is -|hyperref| aware and hopefully |hyperref| compatible! It -doesn't matter whether \etoc or |hyperref| is loaded first. +\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 @@ -4908,45 +5334,24 @@ 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. -\etoc expects the document sectioning units to write their -data into the file having extension |.toc|, in the form of -lines containing the \csa{contentsline} command and its -arguments. 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 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}}. For the -advanced uses such as what is done in \autoref{ssec:molecule} it is - important -to know that |tableof| adds one level of grouping inside the |.toc| file itself. -So when one needs to make some information \csa{global}, one can not wait to be -at the level of the second argument of \csa{etocsettocstyle}, as -|tableof| will already have closed the group then. The \csa{global} things (on -volatile data) must -be done at the latest in the \meta{finish} part of the top (or last) sectioning - level used. -This only applies of course to \csa{tableofcontents} or - \csa{localtableofcontents} following the - \csa{nexttocwithtags}|{required}||{forbidden}| command from |tableof|. - -And when the commands - \csa{tableof} or \csa{tablenotof} of package - |tableof| are used, - they typeset the table of contents according to the document class defaults: - to benefit from the \etoc styles, it is mandatory to use either - \csa{tableofcontents}, or \csa{localtableofcontents} or one of the other \etoc - commands, and |tableof (v1.1)| will influence the outcome only if - \csa{nexttocwithtags}|{required}||{forbidden}| was added before the table of - contents typesetting command. +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} @@ -5108,7 +5513,7 @@ abgerufen werden. kompatibel zu sein. Seit der Version |1.07k| ist es möglich \etoc gleichzeitig mit |tocloft| zu benutzen. -\section{Lizenz, Installation} +\section{Lizenz} \begingroup\ttfamily\small\hyphenchar\font -1 \parindent0pt @@ -5117,7 +5522,6 @@ gleichzeitig mit |tocloft| zu benutzen. \clearpage - \etocsettocdepth {subsection} \etocdepthtag.toc{overview} @@ -5532,6 +5936,7 @@ Der Code: \csb{etocdisplay}\par \csb{etocframedstyle}\par \csb{etocframed}\par + \csb{etociffirst}\par \csb{etocifnumbered}\par \csb{etocignoredepthtags}\par \csb{etocignoretoctocdepth}\par @@ -5572,6 +5977,8 @@ Der Code: \end{multicols} \endgroup + +\clearpage % 15 octobre, je teste les tags \etocdepthtag.toc {arbitrarily} @@ -6099,6 +6506,7 @@ bezieht sich auf seine \hyperref[ssec:tocclone]{Unterabschnitte}, welche für di Kodierung vorgesehen sind. +\clearpage \etocdepthtag.toc {surprising} \part{Überraschende Anwendungen von \etoc} \label{part:surprising} @@ -6894,7 +7302,8 @@ Schriftsatz: \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 (siehe \autoref{ssec:tocastable}); +\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. @@ -7072,8 +7481,242 @@ vorherige \hyperref[toc:forest]{Forest-TOC} auch. \end{verbatim} \end{minipage} -% \vfill\eject +\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} @@ -7172,6 +7815,18 @@ 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 @@ -7186,7 +7841,7 @@ findet. In der Zwischenzeit werden alle Einträge für dieses Level gesetzt, ind 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 \marg{prefix} und \marg{contents}-Teile aus der +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 @@ -7194,23 +7849,38 @@ 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{Der \csbhyp{etoc\-skip\-first\-pre\-fix}-Befehl} + + +\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} -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. 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! \subsection{Der \csbhyp{etocnumber}-Befehl} \label{etocnumber} @@ -7235,6 +7905,7 @@ was erklärt, warum er in der Label-Spezifikation benutzt werden kann, ohne \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 @@ -7267,6 +7938,13 @@ 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} @@ -7284,6 +7962,7 @@ 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} @@ -7325,7 +8004,7 @@ welches es erlaubt einen Link mit einem beliebigen Name zu erstellen. All diese Befehle sind \emph{nicht} robust. -Beispiel\begingroup +Beispiel\begingroup\ \etocsetstyle {section} {\begin{itemize*}[itemjoin={{; }}, itemjoin*={{, und }}]} {\global\let\TmpEtocNumber\etocthelinkednumber @@ -7358,6 +8037,34 @@ Beispiel\begingroup \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} @@ -7495,6 +8202,8 @@ Zurück zu Schwarz. Man beachte das diese Bereichsprobleme auch in mehrsprachige 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} @@ -7938,6 +8647,8 @@ Zur Erzeugung dieses Inhaltsverzeichnisses wurde folgender Code genutzt: \endgroup \end{verbatim} + +\clearpage \etocdepthtag.toc {custom} \part{\etoc nutzen und an\-passen} @@ -8430,6 +9141,7 @@ dass sie nichts verändern. Daher kann der Nutzer selbst entscheiden, ob er Farben nutzen will oder nicht. +\clearpage \etocdepthtag.toc {tips} \part{Tipps} @@ -8453,7 +9165,7 @@ Farben nutzen will oder nicht. \fbox{\raisebox{-\fontdimen22\textfont2} {\color{blue}\parbox{.5\linewidth} {\normalfont Dieser Text ist vertikal perfekt zentriert - unter Berücksichtigung der \emph{surrounding horizontal rules.}}}} + unter Berücksichtigung der \emph{surrounding horizontal rules.}}}} \ref{toc:globalcmds} \end{verbatim} @@ -8465,7 +9177,7 @@ Farben nutzen will oder nicht. \fbox{\raisebox{-\fontdimen22\textfont2} {\color{blue}\parbox{.5\linewidth} {\normalfont Dieser Text ist vertikal perfekt zentriert - unter Berücksichtigung der \emph{surrounding horizontal rules.}}}}} + unter Berücksichtigung der \emph{surrounding horizontal rules.}}}}} \ref{toc:globalcmds} @@ -8558,20 +9270,30 @@ Aber als Erstes der Code von \csa{thispartstats}:\par \stepcounter{mycountii}% \sbox{\lastnameii}{\etocname}% \sbox{\lastnumberii}{\etocnumber}} {}% - \etocsetstyle{section} {} {} + \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 +% 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. @@ -8593,15 +9315,18 @@ steht hier für die Verwendung in einem Kapitel). \let\firstsubnumber\etocthelinkednumber \def\thisspecialstatsaux{}} \begingroup - \etocsetstyle{subsection} {} {} + \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}.}% + {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}% @@ -8763,90 +9488,75 @@ es kann leicht recycelt) erhalten wir: \end{verbatim} \endgroup -\subsection{Das TOC als eine Tabelle setzend}\label{ssec:tocastable} - -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. +\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} -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. - - -\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\\}% -} - -\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 \begin{verbatim} \newtoks\toctabletok @@ -8858,9 +9568,8 @@ Tabelle. \toks2 \expandafter{\etocthelinkedname}% \toks4 \expandafter{\etocthelinkedpage}% \edef\toctablepiece {\noexpand\hline - \strut\the\toks0 &\noexpand\bfseries\the\toks2 - &\the\toks4 \noexpand\\ - \noexpand\hline}% + \noexpand\strut\the\toks0 &\noexpand\bfseries\the\toks2 + &\the\toks4 \noexpand\\\noexpand\hline}% } \newcommand*\PrepareSection{% \toks0 \expandafter{\etocthelinkednumber}% @@ -8879,6 +9588,7 @@ Tabelle. &\the\toks4 \noexpand\\}% } +\begingroup \etocsetstyle{part}{}{}{\PreparePart \appendtotok\toctabletok\toctablepiece}{} \etocsetstyle{section}{}{}{\PrepareSection \appendtotok\toctabletok\toctablepiece}{} @@ -8894,6 +9604,7 @@ Tabelle. \etocsettocdepth {subsection} \tableofcontents \the\toctabletok +\endgroup \end{verbatim} \subsection{Kompatibilität mit anderen Paketen} @@ -8916,9 +9627,27 @@ Speicher von \etoc getan, bei |\begin{document}|. \footnote{Neu mit |1.07m|. 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|. Es ist -|hyperref| bekannt und hoffentlich kompatibel mit ihm! Es ist kein Thema, ob -\etoc vor oder nach |hyperref| geladen wird. +\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 @@ -8978,40 +9707,28 @@ 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. -\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. 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 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. -Es ist möglich, simultan \etoc und -{\color{niceone}|tableof|}\footnote{\url{http://ctan.org/pkg/tableof}} zu -nehmen. Für die erweiterte Nutzung, sowas wie das Nehmen von in -\autoref{ssec:molecule}, ist es wichtig, zu wissen dass |tableof| eine Ebene der -Gruppierung selbst in die |.toc|-Datei einfügt. Also, wenn man einige -Information \csa{global} machen möchte, kann man nicht warten, um auf der Ebene -des zweiten Arguments von \csa{etocsettocstyle} zu sein, |tableof| wird die -Gruppe dann schon geschlossen haben. Die \csa{global}-Dinge (auf flüchtigen -Daten) müssen spätestens im letzten Teil der oberen (oder letzten) -Untergliederungsebene eingeführt sein. Dies gilt natürlich nur für -\csa{tableofcontents} oder \csa{localtableofcontents} und die folgenden -\csa{nexttocwithtags}|{erforderlichen}||{verbotenen}| Befehle von |tableof|. - -Und wenn die Befehle \csa{tableof} oder \csa{tablenotof} vom Paket |tableof| -genutzt werden, setzen sie das Inhaltsverzeichnis nach den Standards der -Dokumentklasse: Um von den \etoc-Stilen zu profitieren, ist es zwingend -erforderlich, entweder \csa{tableofcontents} oder \csa{localtableofcontents} -oder einen anderen \etoc-Befehl zu nehmen, und |tableof (v1.1)| wird das -Ergebnis nur beeinflussen, wenn \csa{nexttocwithtags}|{required}||{forbidden}| -hinzugefügt wurde, bevor dar Inhaltsverzeichnis-typesetting-Befehl kommt. +\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} @@ -9050,8 +9767,8 @@ bestimmte Anzahl von Durchführungen haben, um für das Dokument das endgültige Aussehen zu erhalten (mindestens zweimal durchlaufen). -%%\clearpage %% not useful for current (2014/04/28) German version +\clearpage \etocdepthtag.toc {code} \part{Der Code} @@ -9100,9 +9817,9 @@ Paketversion ist \texttt{\etocDEpkgversion} von \texttt{\etocDEpkgdate}. \parskip \tw@\p@ plus 1fil\relax \let \do \@makeother \dospecials \makestarlowast \catcode`+ \active \begingroup\lccode`~`+ - \lowercase{\endgroup\def~[##1]{\foreignlanguage{german}{##1}}}% - \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@ @@ -9130,16 +9847,40 @@ Paketversion ist \texttt{\etocDEpkgversion} von \texttt{\etocDEpkgdate}. \begin{multicols}{2} \begin{jfverbatim} -v1.07n [2015/03/05]> +v1.08 [2015/03/10]^ + + \etocskipfirstprefix may now appear anywhere in the <start> + part of a level style. - 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. + New commands \etociffirst, \etocxiffirst, \etocxifnumbered. - In the documentation: list of main commands now in alphabetic order. + 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. -v1.07m [2015/01/23]> + 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 @@ -9150,7 +9891,7 @@ v1.07m [2015/01/23]> New command \etocbeforetitlehook. New command \etocdisplay. -v1.07l [doc of 2014/04/29]> +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 @@ -9162,7 +9903,7 @@ v1.07l [doc of 2014/04/29]> grateful thanks to all! -v1.07l [2014/04/22]> +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 @@ -9172,32 +9913,32 @@ v1.07l [2014/04/22]> contrarily to the situation with the native tocvsec2. -v1.07k [2014/03/06]> +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]> +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]> +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]> +v1.07h [2013/10/16]^ New commands \etocdepthtag.toc, \etocsettagdepth, \etocobeydepthtags, \etocignoredepthtags. -v1.07g [2013/10/13]> +v1.07g [2013/10/13]^ New commands \etocsettocdepth, \etocsettocdepth.toc, \etocobeytoctocdepth, \etoc~-ignoretoctocdepth which @@ -9226,13 +9967,13 @@ v1.07g [2013/10/13]> dvipdfmx which produces the smallest file). -v1.07f [2013/03/07]> +v1.07f [2013/03/07]^ New macros \etocthelinkedname, \etocthelinkednumber, \etocthelinkedpage, and \etocthelink. -v1.07e [2013/03/01]> +v1.07e [2013/03/01]^ Improvements in the package own line styles with regards to penalties and vertical spaces. @@ -9243,13 +9984,13 @@ v1.07e [2013/03/01]> More such examples added 2013/03/03. -v1.07d [2013/02/24]> +v1.07d [2013/02/24]^ Minor code improvements and new documentation section ``Another compatibility mode''. -v1.07b [2013/02/02]> +v1.07b [2013/02/02]^ Removal of the \xspace from the macros \etocname, \etocnumber, \etocpage. @@ -9257,7 +9998,7 @@ v1.07b [2013/02/02]> Additional examples in the documentation. -v1.07 [2013/01/29]> +v1.07 [2013/01/29]^ New commands: @@ -9274,7 +10015,7 @@ v1.07 [2013/01/29]> addition to the tables of contents. -v1.06 [2012/12/07]> +v1.06 [2012/12/07]^ The standard macros \l@section etc... are modified only during the calls to \tableofcontents; they can thus be @@ -9283,7 +10024,7 @@ v1.06 [2012/12/07]> by etoc for the TOCs typeset in compatibility mode. -v1.05 [2012/12/01]> +v1.05 [2012/12/01]^ \localtableofcontents replaces \tableofcontents~lowast (for compatibility with the memoir class). @@ -9292,7 +10033,7 @@ v1.05 [2012/12/01]> classes. -v1.04 [2012/11/24]> +v1.04 [2012/11/24]^ A (possibly local) table of contents can be labeled: @@ -9304,7 +10045,7 @@ v1.04 [2012/11/24]> \tableofcontents \ref{toc:1} -v1.02 [2012/11/18]> +v1.02 [2012/11/18]^ Initial version. @@ -9326,6 +10067,19 @@ v1.02 [2012/11/18]> \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 @@ -9346,7 +10100,7 @@ v1.02 [2012/11/18]> \fi \ifnum\ForDeutsch=1 \texttt{\hyphenchar\font-1 - \parindent 0pt\rightskip 0.5cm minus 0.5cm \selectlanguage{german}% + \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 @@ -9367,9 +10121,8 @@ v1.02 [2012/11/18]> \fi \end{document}} -% Writing-up source code comments is hopefully for a future -% release. +% 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. @@ -9416,13 +10169,22 @@ v1.02 [2012/11/18]> \DeclareOption*{\PackageWarning{etoc}{Option `\CurrentOption' is unknown.}} \ProcessOptions\relax % \end{macrocode} -% placeholder for comments +% |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 @@ -9436,24 +10198,27 @@ v1.02 [2012/11/18]> \newif\ifEtoc@parskip % 1.07d \newif\ifEtoc@tocwithid \newif\ifEtoc@standard -\newif\ifEtoc@part -% \end{macrocode} -% placeholder for comments -% \begin{macrocode} +\newif\ifEtoc@skipprefix % 1.08 +\newif\ifEtoc@isfirst % 1.08 \newif\ifEtoc@localtoc \newif\ifEtoc@skipthisone \newif\ifEtoc@stoptoc \newif\ifEtoc@notactive -\newcounter{etoc@tocid} \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} -% placeholder for comments +% |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@} @@ -9475,7 +10240,7 @@ v1.02 [2012/11/18]> \def\Etoc@@four@ {four} \def\Etoc@@five@ {five} % \end{macrocode} -% |1.07g| +% |1.07g|. % \begin{macrocode} \expandafter\def\csname Etoc@-3@@\endcsname {-\thr@@} \expandafter\let\csname Etoc@-2@@\endcsname \Etoc@@minustwo@@ @@ -9490,12 +10255,14 @@ v1.02 [2012/11/18]> \let\Etoc@all@@ \Etoc@@five@@ \let\Etoc@none@@ \Etoc@minf % \end{macrocode} -% placeholder for comments +% 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{% - \def\Etoc@levellist@elt{\noexpand\Etoc@levellist@elt\noexpand}% - \edef\Etoc@levellist{\Etoc@levellist\Etoc@levellist@elt#1}} +\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 @@ -9541,10 +10308,29 @@ v1.02 [2012/11/18]> \etocsetlevel{paragraph}{4} \etocsetlevel{subparagraph}{5} % \end{macrocode} -% placeholder for comments +% 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} -\def\Etoc@setflags #1{% - \ifcase #1\relax +\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 @@ -9572,161 +10358,249 @@ v1.02 [2012/11/18]> \or \global\Etoc@vtrue \else - \ifnum#1=\m@ne - \global\Etoc@vfalse - \global\Etoc@ivfalse - \global\Etoc@iiifalse - \global\Etoc@iifalse - \global\Etoc@ifalse - \global\Etoc@false +% \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@vfalse - \global\Etoc@ivfalse - \global\Etoc@iiifalse - \global\Etoc@iifalse - \global\Etoc@ifalse - \global\Etoc@false \global\Etoc@jfalse \global\Etoc@jjtrue \fi \fi} % \end{macrocode} -% placeholder for comments +% |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} -\AtBeginDocument{% -\@ifpackageloaded{parskip}{\Etoc@parskiptrue}{}% -\@ifpackageloaded{hyperref}{\Etoc@hyperreftrue - \def\Etoc@et@hop#1#2#3#4#5{#1{#3}{#4}{#5}#2}% - \long\def\Etoc@gobblesixorfive#1#2#3#4#5#6{}} - {\def\Etoc@et@hop#1#2#3#4{#1{#3}{#4}#2}% - \long\def\Etoc@gobblesixorfive#1#2#3#4#5{}}% +\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| (perhaps \etoc should not rely on -% the fact that the |\contentsline| things have their standard meaning). 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 -% first encountering that level and the end part will be executed when hitting -% a more important level. +% 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\Etoc@swa#1{% - \Etoc@et@hop - {\Etoc@savedcontentsline{#1}} - {\Etoc@prefix\Etoc@contents}} -\def\Etoc@swb#1{% - \Etoc@et@hop - {\Etoc@savedcontentsline{#1}} - {\Etoc@contents}} -\let\etocskipfirstprefix\@thirdofthree +\def\etocskipfirstprefix {\global\Etoc@skipprefixtrue } % \end{macrocode} -% The |\Etoc@next| at the end does the "begin" part of the corresponding -% style. The temporary macro |\Etoc@tmp| is used here, it can safely be used -% also in |\Etoc@lxyz| as it is executed only later, during expansion of -% |\contentsline|. +% |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@tmp\csname Etoc@#1@@\endcsname +\def\Etoc@etoccontentsline #1{% + \global\expandafter\let\expandafter\Etoc@level\csname Etoc@#1@@\endcsname \Etoc@skipthisonefalse - \let\Etoc@next\Etoc@gobblesixorfive - \ifnum\Etoc@tmp=\Etoc@@six@@ + \ifnum\Etoc@level=\Etoc@@six@@ \Etoc@skipthisonetrue \else \ifEtoc@localtoc - \let\Etoc@prenext\relax + \let\Etoc@next\relax \ifEtoc@stoptoc \Etoc@skipthisonetrue \fi - \ifnum\Etoc@tmp<\Etoc@localtop - \def\Etoc@prenext{\global\Etoc@stoptoctrue}% + \ifnum\Etoc@level<\Etoc@localtop + \def\Etoc@next{\global\Etoc@stoptoctrue}% \Etoc@skipthisonetrue \fi \ifEtoc@notactive - \def\Etoc@prenext{\Etoc@setflags{\Etoc@tmp}}% + \def\Etoc@next{\Etoc@setflags}% \Etoc@skipthisonetrue \fi - \Etoc@prenext + \Etoc@next \fi \fi - \ifnum\c@tocdepth<\Etoc@tmp\relax\else - \ifEtoc@skipthisone\else - \global\let\Etoc@next\relax - \ifcase\Etoc@tmp - \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@ \else \def\Etoc@next{\Etoc@begin@zero}\fi - \def\Etoc@contents{\Etoc@contents@zero}% - \def\Etoc@prefix{\Etoc@prefix@zero}% - \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 - \ifEtoc@i \else \def\Etoc@next{\Etoc@begin@one}\fi - \def\Etoc@contents{\Etoc@contents@one}% - \def\Etoc@prefix{\Etoc@prefix@one}% - \or - \ifEtoc@v \Etoc@end@five\fi - \ifEtoc@iv \Etoc@end@four\fi - \ifEtoc@iii \Etoc@end@three\fi - \ifEtoc@ii \else \def\Etoc@next{\Etoc@begin@two}\fi - \def\Etoc@contents{\Etoc@contents@two}% - \def\Etoc@prefix{\Etoc@prefix@two}% - \or - \ifEtoc@v \Etoc@end@five\fi - \ifEtoc@iv \Etoc@end@four\fi - \ifEtoc@iii \else \def\Etoc@next{\Etoc@begin@three}\fi - \def\Etoc@contents{\Etoc@contents@three}% - \def\Etoc@prefix{\Etoc@prefix@three}% - \or - \ifEtoc@v \Etoc@end@five\fi - \ifEtoc@iv \else \def\Etoc@next{\Etoc@begin@four}\fi - \def\Etoc@contents{\Etoc@contents@four}% - \def\Etoc@prefix{\Etoc@prefix@four}% - \or - \ifEtoc@v \else \def\Etoc@next{\Etoc@begin@five}\fi - \def\Etoc@contents{\Etoc@contents@five}% - \def\Etoc@prefix{\Etoc@prefix@five}% + \let\Etoc@next\Etoc@gobblesixorfive + \ifnum\c@tocdepth<\Etoc@level + \else + \ifEtoc@skipthisone \else - \ifnum\Etoc@tmp=\m@ne - \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 \else \def\Etoc@next{\Etoc@begin@minusone}\fi - \def\Etoc@contents{\Etoc@contents@minusone}% - \def\Etoc@prefix{\Etoc@prefix@minusone}% +% \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 - \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 \else \def\Etoc@next{\Etoc@begin@minustwo}\fi - \def\Etoc@contents{\Etoc@contents@minustwo}% - \def\Etoc@prefix{\Etoc@prefix@minustwo}% + \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 - \ifnum\Etoc@tmp=\m@ne\Etoc@parttrue\else\Etoc@partfalse\fi - \Etoc@setflags{\Etoc@tmp}% - \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 - \@firstoftwo{\Etoc@swa{#1}}{\Etoc@swb{#1}}} + \Etoc@et@hop{\Etoc@prefix\Etoc@contents}{\Etoc@savedcontentsline{#1}}% +} % \end{macrocode} -% |[2013/03/07]|: +% |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, @@ -9757,23 +10631,25 @@ v1.02 [2012/11/18]> % 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{% - \@namedef {etoclink }{\leavevmode}% fall-back - \let\etocthelink \@empty % fall-back - \@namedef {etocname }{\leavevmode #1}% fall-back (perhaps linked) - \def\etocthename {#1}% (if link, will be removed later) - \def\etocthelinkedname {#1}% will probably get redefined - \@namedef {etocpage }{\leavevmode #2}% (perhaps linked) + \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 - \ifEtoc@part + \ifnum\Etoc@level=\m@ne \Etoc@getit #1\hspace\relax\etoc@ % additional job for parts \fi \fi} % \end{macrocode} -% placeholder for comments +% |1.08| adds the |\Etoc@global|'s. % \begin{macrocode} \def\Etoc@getthepage #1{% \let\Etoc@next\Etoc@getthepage@nohyp @@ -9783,8 +10659,8 @@ v1.02 [2012/11/18]> \Etoc@next #1% } \def\Etoc@getthepage@nohyp #1\etoc@ {% - \def\etocthepage {#1}% - \def\etocthelinkedpage {#1}% + \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 @@ -9795,13 +10671,15 @@ v1.02 [2012/11/18]> % 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@ {% - \@namedef{etoclink }##1{\leavevmode #1{#2}{#3}{##1}#5}% - \edef\etocthelink ##1{\noexpand\hyperlink {#3}{##1}}% - \def\etocthepage {#4}% + \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}}% - \expandafter\def\expandafter\etocthelinkedpage\expandafter + \Etoc@global\expandafter\def\expandafter\etocthelinkedpage\expandafter {\expandafter\hyperlink \Etoc@tmp{#4}}% } % @@ -9821,98 +10699,100 @@ v1.02 [2012/11/18]> \Etoc@next #1% } % \end{macrocode} -% placeholder for comments +% |1.08| adds the |\Etoc@global|'s. % \begin{macrocode} \def\Etoc@getnb@nohyp #1#2#3\etoc@ {% \def\Etoc@getname ##1\relax\relax\etoc@ {% - \@namedef {etocname }{\leavevmode ##1}% - \def\etocthename {##1}% - \def\etocthelinkedname {##1}% + \Etoc@global\@namedef {etocname }{\leavevmode ##1}% + \Etoc@global\def\etocthename {##1}% + \Etoc@global\def\etocthelinkedname {##1}% }% \ifx #1\numberline - \@namedef {etocnumber }{\leavevmode #2}% - \def\etocthenumber {#2}% - \def\etocthelinkednumber {#2}% - \Etoc@numbertrue + \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 - \@namedef {etocnumber }{\leavevmode}% - \let\etocthenumber \@empty - \let\etocthelinkednumber \@empty - \Etoc@numberfalse + \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.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@ {% - \def\Etoc@getname ##1\relax\relax\etoc@ {% - \@namedef {etocname }{\leavevmode #1{#2}{#3}{##1}#5}% - \def\etocthename {##1}% - \edef\Etoc@tmp {{#3}}% - \expandafter\def\expandafter\etocthelinkedname\expandafter + \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 - \@namedef {etocnumber }{\leavevmode #1{#2}{#3}{##2}#5}% - \def\etocthenumber {##2}% + \Etoc@global\@namedef {etocnumber }{\leavevmode #1{#2}{#3}{##2}#5}% + \Etoc@global\def\etocthenumber {##2}% \edef\Etoc@tmp {{#3}}% - \expandafter\def\expandafter\etocthelinkednumber\expandafter - {\expandafter\hyperlink \Etoc@tmp{##2}}% - \Etoc@numbertrue + \Etoc@global\expandafter\def\expandafter\etocthelinkednumber + \expandafter{\expandafter\hyperlink \Etoc@tmp{##2}}% + \Etoc@global\Etoc@numbertrue \Etoc@getname ##3\etoc@ \else - \@namedef {etocnumber }{\leavevmode}% - \let\etocthenumber \@empty - \let\etocthelinkednumber \@empty - \Etoc@numberfalse - \def\etocthename {#4}% + \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}}% - \expandafter\def\expandafter\etocthelinkedname\expandafter - {\expandafter\hyperlink \Etoc@tmp{#4}}% + \Etoc@global\expandafter\def\expandafter\etocthelinkedname + \expandafter {\expandafter\hyperlink \Etoc@tmp{#4}}% \fi }% - \@namedef {etoclink }##1{\leavevmode #1{#2}{#3}{##1}#5}% - \edef\etocthelink ##1{\noexpand\hyperlink {#3}{##1}}% + \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} -% placeholder for comments +% |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@ {% - \@namedef {etocname }{\leavevmode ##1}% - \def\etocthename {##1}% - \def\etocthelinkedname {##1}% + \Etoc@global\@namedef {etocname }{\leavevmode ##1}% + \Etoc@global\def\etocthename {##1}% + \Etoc@global\def\etocthelinkedname {##1}% }% \ifx\relax#2\else - \@namedef {etocnumber }{\leavevmode #1}% - \def\etocthenumber {#1}% - \def\etocthelinkednumber {#1}% - \Etoc@numbertrue + \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.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@ {% - \@namedef {etocname }{\leavevmode #1{#2}{#3}{##1}#5}% - \def\etocthename {##1}% + \Etoc@global\@namedef {etocname }{\leavevmode #1{#2}{#3}{##1}#5}% + \Etoc@global\def\etocthename {##1}% \edef\Etoc@tmp {{#3}}% - \expandafter\def\expandafter\etocthelinkedname\expandafter - {\expandafter\hyperlink \Etoc@tmp{##1}}% + \Etoc@global\expandafter\def\expandafter\etocthelinkedname + \expandafter{\expandafter\hyperlink \Etoc@tmp{##1}}% }% \def\Etoc@getnbr ##1\hspace##2##3\etoc@ {% \ifx\relax##2\else - \@namedef {etocnumber }{\leavevmode #1{#2}{#3}{##1}#5}% - \def\etocthenumber {##1}% + \Etoc@global\@namedef {etocnumber }{\leavevmode #1{#2}{#3}{##1}#5}% + \Etoc@global\def\etocthenumber {##1}% \edef\Etoc@tmp {{#3}}% - \expandafter\def\expandafter\etocthelinkednumber\expandafter - {\expandafter\hyperlink \Etoc@tmp{##1}}% - \Etoc@numbertrue + \Etoc@global\expandafter\def\expandafter\etocthelinkednumber + \expandafter{\expandafter\hyperlink \Etoc@tmp{##1}}% + \Etoc@global\Etoc@numbertrue \Etoc@getname ##3\etoc@ \fi }% @@ -9934,6 +10814,13 @@ v1.02 [2012/11/18]> \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} @@ -9981,7 +10868,14 @@ v1.02 [2012/11/18]> \global\let\Etoc@openouttoc\empty } % \end{macrocode} -% placeholder for comments +% |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 @@ -9992,22 +10886,6 @@ v1.02 [2012/11/18]> \global\Etoc@false \global\Etoc@jfalse \global\Etoc@jjfalse -\ifEtoc@standard - \etoc@setstyle{@minustwo}{}{}{}{}% - \etoc@setstyle{@minusone}{}{}{}{}% - \etoc@setstyle{@zero}{}{}{}{}% - \etoc@setstyle{@one}{}{}{}{}% - \etoc@setstyle{@two}{}{}{}{}% - \etoc@setstyle{@three}{}{}{}{}% - \etoc@setstyle{@four}{}{}{}{}% - \etoc@setstyle{@five}{}{}{}{}% -\else - \def\Etoc@levellist@elt##1{\let##1\Etoc@lxyz}% - \Etoc@levellist - \let\booknumberline\numberline - \let\partnumberline\numberline - \let\chapternumberline\numberline -\fi \the\Etoc@toctoks \ifEtoc@notactive\else \ifEtoc@v \Etoc@end@five\fi @@ -10027,14 +10905,14 @@ v1.02 [2012/11/18]> \ifEtoc@localtoc \ifEtoc@notactive \ifnum #1=#2\relax - \ifEtoc@jj \let\Etoc@localtop\Etoc@@minusone@@ \fi - \ifEtoc@j \let\Etoc@localtop\Etoc@@zero@@ \fi - \ifEtoc@ \let\Etoc@localtop\Etoc@@one@@ \fi - \ifEtoc@i \let\Etoc@localtop\Etoc@@two@@ \fi - \ifEtoc@ii \let\Etoc@localtop\Etoc@@three@@ \fi - \ifEtoc@iii \let\Etoc@localtop\Etoc@@four@@ \fi - \ifEtoc@iv \let\Etoc@localtop\Etoc@@five@@ \fi - \ifEtoc@v \let\Etoc@localtop\Etoc@@six@@ \fi + \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 @@ -10076,7 +10954,7 @@ v1.02 [2012/11/18]> \etocaftertochook % 1.07g } % \end{macrocode} -% |[2013/03/07]|: I discover a \csa{@namedef} trick to construct the +% |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|):\\ @@ -10090,7 +10968,9 @@ v1.02 [2012/11/18]> \def\Etoc@label#1{\label{#1}\futurelet\Etoc@nexttoken\Etoc@t@bleofcontents} \@firstofone{\def\Etoc@again} {\futurelet\Etoc@nexttoken\Etoc@t@bleofcontents} % \end{macrocode} -% placeholder for comments +% 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 @@ -10129,6 +11009,9 @@ v1.02 [2012/11/18]> % \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 @@ -10136,60 +11019,109 @@ v1.02 [2012/11/18]> \Etoc@openouttoc \Etoc@par \begingroup % closed in \Etoc@t@bleofcontents or \Etoc@localtableofcontents - \def\etoc@startlocaltoc##1{\etoc@@startlocaltoc{##1}{\c@etoc@tocid}}% - \@ifstar - {\def\Etoc@aftertitlehook{}\Etoc@table@fcontents} - {\let\Etoc@aftertitlehook\etocaftertitlehook\Etoc@table@fcontents}} +% \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 - \@ifstar - {\def\Etoc@aftertitlehook{}\Etoc@localtable@fcontents} - {\let\Etoc@aftertitlehook\etocaftertitlehook\Etoc@localtable@fcontents}} + \let\tof@begingroup\@empty + \let\tof@endgroup \@empty + \@ifstar + {\def\Etoc@aftertitlehook{}\Etoc@localtable@fcontents} + {\let\Etoc@aftertitlehook\etocaftertitlehook\Etoc@localtable@fcontents}} % \end{macrocode} -% placeholder for comments. +% |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 - \let\Etoc@@next\@firstofone\else - \let\Etoc@@next\@gobble -\fi -\Etoc@@next{\etocbeforetitlehook % 1.07m - \Etoc@storetocdepth % 1.07g - #1\ifEtoc@parskip\parskip\z@skip\fi %1.07d - \Etoc@aftertitlehook - \let\Etoc@savedcontentsline\contentsline - \let\contentsline\Etoc@etoccontentsline - \Etoc@toctoc - \let\Etoc@@next\relax - \ifEtoc@tocwithid\else - \ifEtoc@localtoc +{% + \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 - \def\Etoc@@next{\Etoc@localtocfalse - \global\Etoc@notactivefalse - \Etoc@toctoc}% - \fi\fi + \Etoc@localtocfalse + \global\Etoc@notactivefalse + \Etoc@toctoc + \fi \fi - \Etoc@@next - \Etoc@resettocdepth % 1.07g - \etocaftercontentshook - #2\@nobreakfalse}}} % 1.07d: \@nobreakfalse moved here + \fi + \etocaftercontentshook + #2\@nobreakfalse % 1.07d: \@nobreakfalse moved here + \Etoc@resettocdepth % 1.07g. moved here from before #2 by 1.08 % \end{macrocode} -% placeholder for comments +% |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}% -\long\expandafter\def - \csname Etoc@prefix@\csname Etoc@#1@\endcsname\endcsname {#3}% -\long\expandafter\def + \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}} + \long\expandafter\def + \csname Etoc@end@\csname Etoc@#1@\endcsname\endcsname {#5}% +} % \end{macrocode} % placeholder for comments % \begin{macrocode} @@ -10980,7 +11912,7 @@ v1.02 [2012/11/18]> Grave accent \` Left brace \{ Vertical bar \| Right brace \} Tilde \~} -\CheckSum{2997} +\CheckSum{3061} \csname check@checksum\endcsname \Finale diff --git a/Master/texmf-dist/source/latex/etoc/etoc.ins b/Master/texmf-dist/source/generic/etoc/etoc.ins index 96ed9f4aaf4..7e292525a27 100644 --- a/Master/texmf-dist/source/latex/etoc/etoc.ins +++ b/Master/texmf-dist/source/generic/etoc/etoc.ins @@ -1,17 +1,17 @@ %% %% Package: etoc -%% Version: 1.07n (2015/03/05) +%% 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/05} -\def\etocdocdate {2015/03/05} -\def\etocpkgversion {v1.07n} +\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 +%% 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 @@ -36,10 +36,11 @@ %% %% 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 +%% 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 @@ -47,7 +48,9 @@ \string\NeedsTeXFormat{LaTeX2e}^^J% \string\ProvidesPackage{etoc}^^J% \space[\etocpkgdate\space\etocpkgversion\space\etocpkgdescription]}% -\generate{\nopreamble +\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 |