diff options
author | Karl Berry <karl@freefriends.org> | 2015-03-14 23:02:20 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2015-03-14 23:02:20 +0000 |
commit | 1b0fc82b597aca3a7eefc79b4b1079629acbce5e (patch) | |
tree | 8193d5afad178169d56187475ecd965cee97a15a | |
parent | f8c8d56f3bc874b6b3b0c381a195755dc2db5dad (diff) |
etoc (14mar15)
git-svn-id: svn://tug.org/texlive/trunk@36516 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r-- | Master/texmf-dist/doc/generic/etoc/README | 182 | ||||
-rw-r--r-- | Master/texmf-dist/doc/generic/etoc/README.md | 188 | ||||
-rw-r--r-- | Master/texmf-dist/doc/generic/etoc/etoc-DE.pdf | bin | 335594 -> 0 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/generic/etoc/etoc.pdf | bin | 361750 -> 0 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/etoc/README | 201 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/etoc/README.md | 195 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/etoc/etoc-DE.pdf | bin | 0 -> 405216 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/etoc/etoc.pdf | bin | 0 -> 430698 bytes | |||
-rw-r--r-- | Master/texmf-dist/source/latex/etoc/etoc.dtx (renamed from Master/texmf-dist/source/generic/etoc/etoc.dtx) | 1319 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/etoc/etoc.ins (renamed from Master/texmf-dist/source/generic/etoc/etoc.ins) | 8 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/etoc/etoc.sty (renamed from Master/texmf-dist/tex/generic/etoc/etoc.sty) | 43 |
11 files changed, 1437 insertions, 699 deletions
diff --git a/Master/texmf-dist/doc/generic/etoc/README b/Master/texmf-dist/doc/generic/etoc/README deleted file mode 100644 index 219efa41dc4..00000000000 --- a/Master/texmf-dist/doc/generic/etoc/README +++ /dev/null @@ -1,182 +0,0 @@ - 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 - -Copyright (C) 2014-2015 Christine Roemer 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 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 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 for the source code and English documentation, - and -- Christine Roemer 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 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! - diff --git a/Master/texmf-dist/doc/generic/etoc/README.md b/Master/texmf-dist/doc/generic/etoc/README.md deleted file mode 100644 index d2d34b77857..00000000000 --- a/Master/texmf-dist/doc/generic/etoc/README.md +++ /dev/null @@ -1,188 +0,0 @@ -% README -% etoc 1.08 -% 2015/03/10 - - 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! - diff --git a/Master/texmf-dist/doc/generic/etoc/etoc-DE.pdf b/Master/texmf-dist/doc/generic/etoc/etoc-DE.pdf Binary files differdeleted file mode 100644 index 1eef29ff2c0..00000000000 --- a/Master/texmf-dist/doc/generic/etoc/etoc-DE.pdf +++ /dev/null diff --git a/Master/texmf-dist/doc/generic/etoc/etoc.pdf b/Master/texmf-dist/doc/generic/etoc/etoc.pdf Binary files differdeleted file mode 100644 index 4bf8a133d19..00000000000 --- a/Master/texmf-dist/doc/generic/etoc/etoc.pdf +++ /dev/null diff --git a/Master/texmf-dist/doc/latex/etoc/README b/Master/texmf-dist/doc/latex/etoc/README new file mode 100644 index 00000000000..e30b103f3d0 --- /dev/null +++ b/Master/texmf-dist/doc/latex/etoc/README @@ -0,0 +1,201 @@ + Source: etoc.dtx (v1.08a 2015/03/13) + 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.08a [2015/03/13] + +\etocname, \etocnumber and \etocpage are now the robust variants of +\etocthelinkedname, \etocthelinkednumber and \etocthelinkedpage. This +should arguably have been done since the addition of the latter to etoc +with v1.07f [2013/03/07]. The earlier \etocname etc... contained the +hyperlink destination only in an unexpanded form. + +The documentation has a brand new title page and a new section _The TOC +as a TikZ mind map_ both illustrating further uses of etoc to display +tables of contents as trees in an automatic manner. + + +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! + diff --git a/Master/texmf-dist/doc/latex/etoc/README.md b/Master/texmf-dist/doc/latex/etoc/README.md new file mode 100644 index 00000000000..7100fcaa401 --- /dev/null +++ b/Master/texmf-dist/doc/latex/etoc/README.md @@ -0,0 +1,195 @@ +<!-- --> + + Source: etoc.dtx (v1.08a 2015/03/13) + 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.08a [2015/03/13] +------------------- + +`\etocname`, `\etocnumber` and `\etocpage` are now the robust variants of +`\etocthelinkedname`, `\etocthelinkednumber` and `\etocthelinkedpage`. +This should arguably have been done since the addition of the latter to +etoc with v1.07f [2013/03/07]. The earlier `\etocname` etc... contained +the hyperlink destination only in an unexpanded form. + +The documentation has a brand new title page and a new section *The TOC as +a TikZ mind map* both illustrating further uses of etoc to display tables +of contents as trees in an automatic manner. + +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! diff --git a/Master/texmf-dist/doc/latex/etoc/etoc-DE.pdf b/Master/texmf-dist/doc/latex/etoc/etoc-DE.pdf Binary files differnew file mode 100644 index 00000000000..ea01b0fde7a --- /dev/null +++ b/Master/texmf-dist/doc/latex/etoc/etoc-DE.pdf diff --git a/Master/texmf-dist/doc/latex/etoc/etoc.pdf b/Master/texmf-dist/doc/latex/etoc/etoc.pdf Binary files differnew file mode 100644 index 00000000000..f01cc06728b --- /dev/null +++ b/Master/texmf-dist/doc/latex/etoc/etoc.pdf diff --git a/Master/texmf-dist/source/generic/etoc/etoc.dtx b/Master/texmf-dist/source/latex/etoc/etoc.dtx index 12bb38b9730..8e9676b4e52 100644 --- a/Master/texmf-dist/source/generic/etoc/etoc.dtx +++ b/Master/texmf-dist/source/latex/etoc/etoc.dtx @@ -1,13 +1,13 @@ % -*- coding: utf-8; -*- %<*none> -{\def\doctimestamp {Time-stamp: <10-03-2015 22:45:02 CET>}% +{\def\doctimestamp {Time-stamp: <13-03-2015 23:06:42 CET>}% \def\getdtxtimestamp #1 <#2 #3 #4>{#2 at #3 #4}% \xdef\etocdtxtimestamp {\expandafter\getdtxtimestamp\doctimestamp }}% %</none> %<*!readme> %% %% Package: etoc -%% Version: 1.08 (2015/03/10) +%% Version: 1.08a (2015/03/13) %% 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> @@ -15,9 +15,9 @@ %% %</!readme> %<*insfile> -\def\etocpkgdate {2015/03/10} -\def\etocdocdate {2015/03/10} -\def\etocpkgversion {v1.08} +\def\etocpkgdate {2015/03/13} +\def\etocdocdate {2015/03/13} +\def\etocpkgversion {v1.08a} \def\etocpkgdescription {Completely customisable TOCs (jfB)} %</insfile> %<*none> @@ -34,7 +34,7 @@ \catcode32=13\catcode`\\=12^^Brelax^^A ^^Bfirstofone{^^Bendgroup^^Bdef^^BetocLicense^^A {% Package: etoc -% Version: 1.08 (2015/03/10) +% Version: 1.08a (2015/03/13) % 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> @@ -67,63 +67,54 @@ }}% \iffalse %</none> -%<readme>% README -%<readme>% etoc 1.08 -%<readme>% 2015/03/10 %<*readme> +<!-- --> - Source: etoc.dtx (v1.08 2015/03/10) + Source: etoc.dtx (v1.08a 2015/03/13) 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. +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. - +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 ============ @@ -132,13 +123,13 @@ 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 +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) +- 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. @@ -152,21 +143,22 @@ At least three ways to produce etoc.pdf (method (3) is preferred): 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. + +- 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 +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, +mit dvipdfmx ist `\Withdvidpdfmx` auf 0 in etoc-DE.tex zu setzen, dann ist pdflatex dreimal mit etoc-DE.tex laufen zu lassen. -Installation: +Installation: etoc.sty -> TDS:tex/latex/etoc/etoc.sty etoc.dtx -> TDS:source/latex/etoc/etoc.dtx @@ -179,85 +171,98 @@ 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. +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. +- 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. +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.08a [2015/03/13] +------------------- + +`\etocname`, `\etocnumber` and `\etocpage` are now the robust variants of +`\etocthelinkedname`, `\etocthelinkednumber` and `\etocthelinkedpage`. +This should arguably have been done since the addition of the latter to +etoc with v1.07f [2013/03/07]. The earlier `\etocname` etc... contained +the hyperlink destination only in an unexpanded form. + +The documentation has a brand new title page and a new section *The TOC as +a TikZ mind map* both illustrating further uses of etoc to display tables +of contents as trees in an automatic manner. + v1.08 [2015/03/10] +------------------ -> `\etocskipfirstprefix` may now appear anywhere in the <start> - part of a level style. +`\etocskipfirstprefix` may now appear anywhere in the `<start>` +part of a level style. -> New commands `\etociffirst`, `\etocxiffirst`, `\etocxifnumbered`. +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 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. +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. +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. +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. +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. +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. +Improved global toc display emulation under KOMA-script classes. -> New command `\etocbeforetitlehook`. New command `\etocdisplay`. +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! +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 @@ -463,6 +468,7 @@ v1.07l [doc of 2014/04/29] \usepackage[utf8]{inputenc} \usepackage[hscale=0.66,vscale=0.75]{geometry} \pagestyle{headings} +% \usepackage{layout} % January 2014. work-around a bug in KOMA 3.12 (December 2013): \makeatletter @@ -671,7 +677,9 @@ v1.07l [doc of 2014/04/29] % 9 octobre 2013, je me décide à ne plus utiliser hidelinks, mais il est tout de % même ajouté au .toc -% 18 mai 2014: pdfinfo différent suivant anglais ou allemand +\usetikzlibrary{mindmap} % 2015/03/12, see http://tex.stackexchange.com/a/232584/4686 + +%18 mai 2014: pdfinfo différent suivant anglais ou allemand \ifnum\ForEnglish=1 \usepackage[pdfencoding=pdfdoc]{hyperref} \hypersetup{% @@ -872,7 +880,6 @@ pdfpagemode=UseOutlines} \endgroup } - \newcommand\etoc{% \texorpdfstring{{\color{joli}\ttfamily\bfseries etoc}}{etoc}\xspace} @@ -1003,7 +1010,51 @@ etoc-framed-mp-hook} \renewcommand*{\etocabbrevpagename}{S.~} \fi -\begin{document}\rmfamily + +% pour les TOC à la TikZ +\newtoks\treetok +\newtoks\parttok +\newtoks\sectiontok +\newtoks\subsectiontok +\newtoks\tmptok +\newcommand*\appendtotok[2]{% #1=toks variable, #2=macro, expands once #2 + #1\expandafter\expandafter\expandafter + {\expandafter\the\expandafter #1#2}} + +% pour les Mindmap +\def\appendpart #1#2#3{% + \edef\tmpstuff {\the#1 child [branch color = #3]{\the#2}}% + #1\expandafter {\tmpstuff }% +} + + +% Vendredi 13 mars 2015 à 18:10:40 +% POUR LA TOC DE TITLE PAGE +\newcount\tikznumberofcurrentgrandchild + +\def\tikzmycustomgrowth {% + \pgftransformreset + \ifnum\tikztreelevel=1 + \pgftransformrotate {(\pgfkeysvalueof{/tikz/sibling angle})*(\tikznumberofcurrentchild-1)}% + \fi + \ifnum\tikztreelevel=2 + \pgftransformrotate {(\pgfkeysvalueof{/tikz/sibling angle})*(\tikznumberofcurrentgrandchild-4)}% + \global\advance\tikznumberofcurrentgrandchild by 1 + \fi + \pgftransformxshift {\the\tikzleveldistance}% +} + +\newcounter{partco} +% 1,2,3,4,5,... -> 1,2,3,1,2,3,1,2,3 +\def\pseudomodthree #1{\numexpr #1 + 3 - 3*((#1+1)/3)\relax} +%\newwrite\TOCasTree +\newbox\TitlePageMindmapTOC + +\usepackage{eso-pic} +\usepackage{picture} + +\begin{document}%\layout +\rmfamily \thispagestyle{empty} %------------------------------------------------------------------------------- @@ -1018,17 +1069,92 @@ etoc-framed-mp-hook} % START ENGLISH VERSION \bookmark[named=FirstPage,level=1]{Title page} -\begin{center} - {\normalfont\Large The \etoc package}\\ - \textsc{Jean-François Burnol}\par - \footnotesize \ttfamily jfbu (at) free (dot) fr\\ - Package version: \etocpkgversion\ (\etocpkgdate) - \let\thefootnote\empty - \footnote{Documentation (\etocdocdate) generated from the source file - with timestamp ``\etocdtxtimestamp''.}\par -\end{center} +\begingroup + +\etocsetstyle{part} + {\etocskipfirstprefix} + {\ifcase\pseudomodthree{\value{partco}}% + \or \appendpart\treetok\parttok {teal!60}% first + \or \appendpart\treetok\parttok {yellow!80}% second + \else\appendpart\treetok\parttok {green!50}% third and next ... + \fi + } + {\stepcounter{partco}% + \edef\treenode{node + {\unexpanded\expandafter{\etocthelinkednumber}. + \unexpanded\expandafter{\etocthelinkedname}}}% +% grosse astuce: la première Partie ne sera pas embêtée par les trois sections +% avant car ce qu'elles auront mis dans \parttok va être effacé. + \parttok\expandafter{\treenode}} + {\ifcase\pseudomodthree{\value{partco}}% + \or \appendpart\treetok\parttok {teal!60}% first + \or \appendpart\treetok\parttok {yellow!80}% second + \else\appendpart\treetok\parttok {green!50}% third and next ... + \fi + } + +\etocsetstyle{section} + {} + {} + {% define the section node + \edef\childnode{child {node {\unexpanded\expandafter{\etocthelinkednumber} + \unexpanded\expandafter{\etocthelinkedname}}}}% + \appendtotok\parttok\childnode } + {} + +\etocsetnexttocdepth{section} +\etocsettocstyle + {\setcounter{partco}{0}% + \treetok{\node [root concept]{\normalfont{The \etoc package}\par {\normalsize\textsc + {Jean-François Burnol}\par \ttfamily jfbu (at) free (dot) fr}\par + {\normalsize Package + version:\par \etocpkgversion{} (\etocpkgdate )\par}}}} + {\global\appendtotok\treetok{ ;}} + +\etocinline\tableofcontents\label{toc:mindmaptitlepage} + +% \immediate\openout\TOCasTree=\jobname.toctree +% \immediate\write\TOCasTree{\the\treetok}% + +\tikzset{ + branch color/.style={ + concept color=#1!white, + every child/.append style={concept color=#1!white!30!white}, + } +}% + +\global\setbox\TitlePageMindmapTOC\hbox{% +\resizebox{.9\paperwidth}{!}{% +\begin{tikzpicture}[mindmap, + text width=2cm, + align = flush center, + growth function=\tikzmycustomgrowth, + nodes={concept}, + concept color=orange!60, + root concept/.append style={font=\huge, text width = 6cm}, + level 1/.append style={level distance=7cm, sibling angle=360/8},% 8 hard-coded mais je pourrais aussi le calculer + level 1 concept/.append style={font=\Large, text width = 3cm}, + level 2/.append style={level distance=12.5cm, sibling angle=360/35},% 35 hard coded mais je pourrais aussi le calculer + % distance par rapport au CENTRE ! (avec le code tel qu'en ce moment) + ] +\the\treetok +\end{tikzpicture}}} +\endgroup + +\indent\null +\begingroup + \let\thefootnote\empty + \footnote{Documentation (\etocdocdate) generated from the source file + with timestamp ``\etocdtxtimestamp''.} +\endgroup \setcounter{footnote}{0} +\AddToShipoutPictureFG*{% + \put(10.5cm,16.85cm) + {\makebox(0,0){\box\TitlePageMindmapTOC}}} + +\clearpage + \etocdepthtag.toc {preamble} %---- @@ -2773,11 +2899,9 @@ to maintain the correct |hyperref| hyperlinks.\footnote{This manual up to the version of May 14, 2013 used package |tikz-qtree| but there were problems with hyperlinks. No such problem arises either when using |forest| or the native |tikz| syntax for trees (which will be illustrated in the next section).} The -hyperlink information put by \etoc inside \csa{etocname}, etc\dots, is just a -pointer, not storable for later use; but the package provides +commands \csa{etocname}, etc\dots, are robust, it is easier to work with \csa{etocthelinkednumber}, \csa{etocthelinkedname}, and \csa{etocthelinkedpage} -whose contents contain the hyperlink in a form which can be stored and later -reused. +which contain the same information in an easier accessible form. For this |forest| tree we have designed very special \etoc styles for sections and subsections. They use a token list register called |\treetok| and a @@ -2789,13 +2913,6 @@ a problem, but can be suppressed if need be via the command \csb{etocinline} or its synonym \csb{etocnopar}.} This is the later job of a |forest| environment which will be given the contents of |\treetok|. -\newtoks\treetok -\newtoks\tmptok - -\newcommand*\appendtotok[2]{% #1=toks variable, #2=macro, expands once #2 - #1\expandafter\expandafter\expandafter - {\expandafter\the\expandafter #1#2}} - % 7 mars: j'utilise \etocthelinkedname défini à partir de 1.07f % mais bien sûr je sais que ça ne marche pas (sauf dans l'arbre pour le lien de @@ -2963,7 +3080,7 @@ typesetting: \end{itemize} -\section{The TOC as a molecule}\label{ssec:molecule} +\section{The TOC as a molecule}\label{sec:molecule} It is also possible to construct a TOC tree obeying the TikZ syntax for trees: but this is a more complicated task for the @@ -3014,8 +3131,8 @@ contents of this (or another) document part, only a \csa{sectiontok} and a % \tableofcontents \label{toc:molecule} \ref{toc:overview} \end{verbatim} -\newtoks\sectiontok -\newtoks\subsectiontok +% \newtoks\sectiontok +% \newtoks\subsectiontok \newcommand*\treenode {} \newcommand*{\appendchildtree}[2]{% token list t1 becomes: t1 child {t2} @@ -3065,7 +3182,6 @@ contents of this (or another) document part, only a \csa{sectiontok} and a % Pour que \pageref fonctionne correctement, je dois mettre % le \tableofcontents dans la figure. - The |\tableofcontents| command appears just above the |tikzpicture| environment in a figure float (for the label of the table of contents to certainly @@ -3091,13 +3207,10 @@ producing it: \end{figure} \end{verbatim} - - This \hyperref[toc:molecule]{TikZ TOC} is fully hyperlinked, like the previous \hyperref[toc:forest]{Forest TOC}. - \etocsettocstyle {\treetok{\node {\autoref{part:globalcmds}}}} {\global\appendtotok\treetok{ ;}} @@ -3141,6 +3254,266 @@ previous \end{verbatim} \end{minipage} +\section{The TOC as a TikZ mind map} +\label{sec:mindmap} + +This is in the same spirit as the ``molecule'' example. The use of the \eTeX{} +primitive \csa{unexpanded} will simplify the code.\footnote{The ``molecule'' +example was added to this documentation on |2013/03/03|. The ``mindmap'' +example was motivated on |2015/03/11| by +\url{http://tex.stackexchange.com/a/232584/4686}. Further help was then obtained via +\url{http://tex.stackexchange.com/q/232816/4686} and this led to the +\hyperref[toc:mindmaptitlepage]{title page} which is a further example.} + + +\begingroup +%\newtoks\treetok +%\newtoks\parttok + +\newcommand*\partnode {} % just to check we don't overwrite something +%\newcommand*\childnode {} + +\newcommand*\tmprotate {} % just to check we don't overwrite something +\newcommand*\tmpoption {} % just to check we don't overwrite something +\newcommand*\tmpstuff {} % just to check we don't overwrite something + +% \newcommand*\appendtotok[2]{% #1=toks variable, #2=macro, expands once #2 +% #1\expandafter\expandafter\expandafter{\expandafter\the\expandafter #1#2}} + +\renewcommand*{\appendchildtree}[3]{% +% this is to construct "t1 child [branch color= #3]{t2}" from #1=t1 and #2=t2 +% t1 and t2 are two toks variable (not macros) +% #3 = for example teal!60 + \edef\tmpstuff {\the#1 child [branch color = #3]{\the#2}}% + #1\expandafter {\tmpstuff }% +} + +% \newcounter{partco} + +% 1,2,3,4,5,... -> 1,2,3,1,2,3,1,2,3 +% \def\pseudomodthree #1{\numexpr #1 + 3 - 3*((#1+1)/3)\relax} + +\etocsetstyle{part} + {\etocskipfirstprefix} +% This updates the global tree with the data from the previous +% part and all its children sections. Moved here because for some parts the +% sections are not displayed due to depth tags. + {\ifcase\pseudomodthree{\value{partco}}% + \or \appendchildtree\treetok\parttok {teal!60}% first + \or \appendchildtree\treetok\parttok {yellow!80}% second + \else\appendchildtree\treetok\parttok {green!50}% third and next ... + \fi + } + {\stepcounter{partco}% +% customize manually some TikZ set-up (should be done inside the TikZ thing I guess) + \def\tmpoption {}% + \def\tmprotate {}% first + \ifnum\value{partco}=5 \def\tmprotate {[counterclockwise from =-40]}\fi + \ifnum\value{partco}=8 \def\tmprotate {[counterclockwise from =-50]}\fi +% define the part node + \edef\partnode{node \tmpoption + {\unexpanded\expandafter{\etocthelinkednumber}. + \unexpanded\expandafter{\etocthelinkedname}}\tmprotate }% +% this is a starting point which will be filled it by the section children + \parttok\expandafter{\partnode}} + {\ifcase\pseudomodthree{\value{partco}}% + \or \appendchildtree\treetok\parttok {teal!60}% first + \or \appendchildtree\treetok\parttok {yellow!80}% second + \else\appendchildtree\treetok\parttok {green!50}% third and next ... + \fi + } + +\etocsetstyle{section} + {} + {} + {% define the section node + \edef\childnode{child {node {\unexpanded\expandafter{\etocthelinkednumber} + \unexpanded\expandafter{\etocthelinkedname}}}}% + % append it to the current \parttok + \appendtotok\parttok\childnode + } + {} + +\etocsettocstyle + {\setcounter{partco}{0}% + \treetok{\node [root concept]{\textbf{The \etoc documentation}}}} + {\global\appendtotok\treetok{ ;}} +% The \global above is mandatory because etoc always typesets TOC inside a group + +\etocsetnexttocdepth{section} +% use of depth tags to cut out some sections. +\etocsettagdepth {preamble} {none} +\etocsettagdepth {overview} {section} +\etocsettagdepth {arbitrarily}{part} +\etocsettagdepth {surprising} {section} +\etocsettagdepth {linestyles} {part} +\etocsettagdepth {globalcmds} {section} +\etocsettagdepth {custom} {section} +\etocsettagdepth {tips} {section} +\etocsettagdepth {code} {section} + +\tikzset{ + branch color/.style={ + concept color=#1!white, + every child/.append style={concept color=#1!white!30!white, font=\normalsize}, + } +}% + +\begin{figure}[th!] +\tableofcontents\label{toc:mindmap}% +\centeredline{\resizebox{.85\paperwidth}{!}% +{\begin{tikzpicture}[mindmap, + grow cyclic, + text width=2cm, + align=flush center, + nodes={concept}, + concept color=orange!60, + root concept/.append style={text width=4cm, font=\Large}, + level 1/.append style={level distance=5cm,sibling angle=45, text width=3cm}, + level 2/.append style={level distance=8cm,sibling angle=25, text width=3cm}, + level 1 concept/.append style={font=\normalsize}, + ] +\the\treetok +\end{tikzpicture}}} +\end{figure} +\endgroup + +It is difficult to get everything to fit on one page. However \csa{resizebox} +comes to the rescue. And it preserves hyperlinks. Nevertheless for this +example I excluded some sections from the display, using the technique of the +\etoc \hyperref[etocdepthtag.toc]{depth tags}. The fully hyperlinked TOC +appears \vpageref{toc:mindmap}. + +\begin{verbatim} +\begingroup +\newtoks\treetok +\newtoks\parttok + +\newcommand*\partnode {} % just to check we don't overwrite something +\newcommand*\childnode {} + +\newcommand*\tmprotate {} % just to check we don't overwrite something +\newcommand*\tmpoption {} % just to check we don't overwrite something +\newcommand*\tmpstuff {} % just to check we don't overwrite something + +\newcommand*\appendtotok[2]{% #1=toks variable, #2=macro, expands once #2 + #1\expandafter\expandafter\expandafter{\expandafter\the\expandafter #1#2}} + +\renewcommand*{\appendchildtree}[3]{% +% this is to construct "t1 child [branch color= #3]{t2}" from #1=t1 and #2=t2 +% t1 and t2 are two toks variable (not macros) +% #3 = for example teal!60 + \edef\tmpstuff {\the#1 child [branch color = #3]{\the#2}}% + #1\expandafter {\tmpstuff }% +} + +\newcounter{partco} + +% 1,2,3,4,5,... -> 1,2,3,1,2,3,1,2,3 +\def\pseudomodthree #1{\numexpr #1 + 3 - 3*((#1+1)/3)\relax} + +\etocsetstyle{part} + {\etocskipfirstprefix} +% This updates the global tree with the data from the previous +% part and all its children sections. Moved here because for some parts the +% sections are not displayed due to depth tags. + {\ifcase\pseudomodthree{\value{partco}}% + \or \appendchildtree\treetok\parttok {teal!60}% first + \or \appendchildtree\treetok\parttok {yellow!80}% second + \else\appendchildtree\treetok\parttok {green!50}% third and next ... + \fi + } + {\stepcounter{partco}% +% customize manually some TikZ set-up (should be done inside the TikZ thing I guess) + \def\tmpoption {}% + \def\tmprotate {}% first + \ifnum\value{partco}=5 \def\tmprotate {[counterclockwise from =-40]}\fi + \ifnum\value{partco}=8 \def\tmprotate {[counterclockwise from =-50]}\fi +% define the part node + \edef\partnode{node \tmpoption + {\unexpanded\expandafter{\etocthelinkednumber}. + \unexpanded\expandafter{\etocthelinkedname}}\tmprotate }% +% this is a starting point which will be filled it by the section children + \parttok\expandafter{\partnode}} + {\ifcase\pseudomodthree{\value{partco}}% + \or \appendchildtree\treetok\parttok {teal!60}% first + \or \appendchildtree\treetok\parttok {yellow!80}% second + \else\appendchildtree\treetok\parttok {green!50}% third and next ... + \fi + } + +\etocsetstyle{section} + {} + {} + {% define the section node + \edef\childnode{child {node {\unexpanded\expandafter{\etocthelinkednumber} + \unexpanded\expandafter{\etocthelinkedname}}}}% + % append it to the current \parttok + \appendtotok\parttok\childnode + } + {} + +\etocsettocstyle + {\setcounter{partco}{0}% + \treetok{\node [root concept]{\textbf{The \etoc documentation}}}} + {\global\appendtotok\treetok{ ;}} +% The \global above is mandatory because etoc always typesets TOC inside a group + +\etocsetnexttocdepth{section} +% use of depth tags to cut out some sections. +\etocsettagdepth {preamble} {none} +\etocsettagdepth {overview} {section} +\etocsettagdepth {arbitrarily}{part} +\etocsettagdepth {surprising} {section} +\etocsettagdepth {linestyles} {part} +\etocsettagdepth {globalcmds} {section} +\etocsettagdepth {custom} {section} +\etocsettagdepth {tips} {section} +\etocsettagdepth {code} {section} + +\tikzset{ + branch color/.style={ + concept color=#1!white, + every child/.append style={concept color=#1!white!30!white, font=\normalsize}, + } +}% + +\begin{figure}[th!] +\tableofcontents\label{toc:mindmap}% +\centeredline{\resizebox{.85\paperwidth}{!}% +{\begin{tikzpicture}[mindmap, + grow cyclic, + text width=2cm, + align=flush center, + nodes={concept}, + concept color=orange!60, + root concept/.append style={text width=4cm, font=\Large}, + level 1/.append style={level distance=5cm,sibling angle=45, text width=3cm}, + level 2/.append style={level distance=8cm,sibling angle=25, text width=3cm}, + level 1 concept/.append style={font=\normalsize}, + ] +\the\treetok +\end{tikzpicture}}} +\end{figure} +\endgroup +\end{verbatim} + +An interesting alternative is to use \etoc rather to convert the entire TOC +into a TikZ tree (perhaps excluding some parts) and print it out to a file +from which it can be recovered and manipulated directly by the author of the +document. Things written to the |.log| file get broken into lines. Here is a +technique to get non-broken output. Once the \csa{treetok} has been computed +by \etoc (as in the \hyperref[toc:molecule]{molecule} example, or the current +example), this code snippet will write it out to file with extension +|.toctree|: +\begin{verbatim} + \newwrite\TOCasTree + \immediate\openout\TOCasTree=\jobname.toctree + \immediate\write\TOCasTree{\the\treetok}% +\end{verbatim} +The author can then copy it from there and customize it manually to get a +suitable tikz picture. + \section{The TOC as a table} \label{sec:tocastable} @@ -3155,11 +3528,6 @@ 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 @@ -3179,32 +3547,25 @@ 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 } + {\strut\etocnumber &\bfseries\etocname &\etocpage } {} \etocsetstyle{section} {} {\etociffirst{\etocifnumbered{\\\hline}{\\\hline\hline}}{\\}} - {\etocthelinkednumber&\etocthelinkedname &\etocthelinkedpage } + {\etocnumber&\etocname &\etocpage } {} \etocsetstyle{subsection} {} {\\} - {&\makebox[1cm][c]{\etocthelinkednumber}% - \parbox[t]{\dimexpr6cm-\tabcolsep\relax} - {\sloppy\itshape\etocthelinkedname\strut}% - &\itshape\etocthelinkedpage } + {&\makebox[1cm][c]{\etocnumber}% + \parbox[t]{\dimexpr6cm-\tabcolsep\relax}{\sloppy\itshape\etocname\strut}% + &\itshape\etocpage } {} \etocsettocstyle @@ -3222,34 +3583,27 @@ simply now with |1.08|. The code follows. \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 +\etocglobaldefs % necessary for \etocname etc... to survive & % observe the locations of the \\ \etocsetstyle{part} {} {\\\hline} - {\strut\etocthelinkednumber &\bfseries\etocthelinkedname - &\etocthelinkedpage } + {\strut\etocnumber &\bfseries\etocname&\etocpage } {} \etocsetstyle{section} {} {\etociffirst{\etocifnumbered{\\\hline}{\\\hline\hline}}{\\}} - {\etocthelinkednumber&\etocthelinkedname &\etocthelinkedpage } + {\etocnumber&\etocname &\etocpage } {} \etocsetstyle{subsection} {} {\\} - {&\makebox[1cm][c]{\etocthelinkednumber}% - \parbox[t]{\dimexpr6cm-\tabcolsep\relax} - {\sloppy\itshape\etocthelinkedname\strut}% - &\itshape\etocthelinkedpage } + {&\makebox[1cm][c]{\etocnumber}% + \parbox[t]{\dimexpr6cm-\tabcolsep\relax}{\sloppy\itshape\etocname\strut}% + &\itshape\etocpage } {} \etocsettocstyle @@ -3312,9 +3666,9 @@ contents. \etocsetstyle{section} {} {\etociffirst{\\\hline\hline}{\\\hline}} - {\etocthelinkedname& - \etocthelinkednumber& - \etocthelinkedpage } + {\etocname& + \etocnumber& + \etocpage } {} \etocsettocstyle @@ -3335,9 +3689,7 @@ contents. \etocsetstyle{section} {} {\etociffirst{\\\hline\hline}{\\\hline}} - {\etocthelinkedname& - \etocthelinkednumber& - \etocthelinkedpage } + {\etocname & \etocnumber & \etocpage } {} \etocsettocstyle @@ -3555,7 +3907,7 @@ command which explains why it can be used inside the label specification without needing an added |\protect|. -\subsubsection{The \csbhyp{etocifnumbered} switch} +\subsection{The \csbhyp{etocifnumbered} switch} \label{etocifnumbered} \label{etocxifnumbered} @@ -3649,19 +4001,19 @@ define the macro |\lastone| to expand to the last name seen at the corresponding level. But no facilities was previously available to do the same with the link data. -The package now provides \csa{etocthelinkedname} to do the similar -thing, with the link data included. It was used in this -documentation when doing the -\hyperref[tocastree]{examples with trees}. +The package provides since |1.07f 2013/03/07| \csa{etocthelinkedname} to do +the similar thing, with the link data included. It was used in this +documentation when doing the \hyperref[tocastree]{examples with trees}. Also provided with the similar goal: \csa{etocthelinkednumber}, \csa{etocthelinkedpage} (which contains a link only if |hyperref| added one to the page number) and \csa{etocthelink}\marg{linkname} which allows to make a link with an arbitrary name. -All these commands are fragile. +All these commands are fragile. In fact starting with |1.08a|, \csa{etocname} +is exactly the robust variant of \csa{etocthelinkedname} -Example of \begingroup +Obsolete example of \begingroup \etocsetstyle {section} {\begin{itemize*}[itemjoin={{; }}, itemjoin*={{, and }}]} {\global\let\TmpEtocNumber\etocthelinkednumber @@ -3677,7 +4029,7 @@ Example of \begingroup \endgroup \begin{verbatim} -Example of \begingroup +Obsolete example of \begingroup \etocsetstyle {section} {\begin{itemize*}[itemjoin={{; }}, itemjoin*={{, and }}]} {\global\let\TmpEtocNumber\etocthelinkednumber @@ -3694,28 +4046,29 @@ Example of \begingroup \endgroup \end{verbatim} -\etoc |1.08| offers a simpler way to the same result: +\etoc |1.08a| offers a simpler way to the same result. And there is no need +anymore here for \csa{etocthelinkedname}, \csa{etocname} works. \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 })} + {\item [{\bfseries\etocnumber.}] \etocname\ (\emph{p. \etocpage })} {\end{itemize*}.}% \etocsetnexttocdepth {section}% \etocsettocstyle {a table of contents done as an inline \texttt{enumitem} environment: }{}% \etocinline\tableofcontents \ref{toc:globalcmds} +\endgroup \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 })} + {\item [{\bfseries\etocnumber.}] + \etocname\ (\emph{p. \etocpage })} {\end{itemize*}.}% \etocsetnexttocdepth {section}% \etocsettocstyle {a table of contents done as an inline @@ -4922,7 +5275,7 @@ none). However, one cannot modify then the font or the color (using the allow to change the color of the un-boxed saved box). If such a need arises, one must switch from using boxes to using macros, and store the |hyperref| data for later use as was done in the code presented in -\autoref{ssec:molecule}. We present also this second method. +\autoref{sec:molecule}. We present also this second method. But first, the code of \csa{thispartstats}:\par \begin{verbatim} @@ -5189,6 +5542,9 @@ 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. +Note: rather than |\toks| registers it would be easier here to use \eTeX{} +\csa{unexpanded} primitive. See for example \autoref{sec:mindmap}. + \begin{verbatim} \newtoks\toctabletok \newcommand*\appendtotok[2]{% #1=toks variable, #2=macro, expands once #2 @@ -5355,18 +5711,20 @@ terminated since then, or \csb{etoclocaldefs} has cancelled its influence. \subsection{\TeX nical matters} -The \csa{etocname}, \csa{etocnumber}, \csa{etocpage} commands are protected against -premature expansion. They contain suitable |hyperref| links if package -|hyperref| is loaded and active for the TOC. The commands \csa{etoclink} and -\csa{etocifnumbered} are also protected against premature expansion. +The \csb{etocname}, \csb{etocnumber}, \csb{etocpage} commands are protected +against premature expansion. They contain suitable |hyperref| links if package +|hyperref| is loaded and active for the TOC. The commands \csb{etoclink} and +\csb{etocifnumbered} are also protected against premature expansion. Also +\csb{etociffirst} and \csb{etoctoccontentsline}. -On the other hand \csa{etocthename}, \csa{etocthenumber}, -\csa{etocthepage} do not represent |hyperref| links, and are -\emph{not} protected against expansion. +On the other hand \csb{etocthename}, \csb{etocthenumber}, \csb{etocthepage} +are \emph{not} protected against expansion. And neither are +\csb{etocthelinkedname}, \csb{etocthelinkednumber}, \csb{etocthelinkedpage}. +The latter contain hyperlink data, if present in the |.toc| file. -The commands such as \csa{etocsetstyle}, \csa{etocsetlevel}, -\csa{etocsettocstyle}, \csa{etocmulticolstyle}, -\csa{etocruledstyle}, \csa{etocframedstyle} obey \LaTeX{}'s +The commands such as \csb{etocsetstyle}, \csb{etocsetlevel}, +\csb{etocsettocstyle}, \csb{etocmulticolstyle}, +\csb{etocruledstyle}, \csb{etocframedstyle} obey \LaTeX{}'s groups. All TOCs are typeset inside groups. \subsection{Errors and catastrophes} @@ -5414,18 +5772,95 @@ version is \texttt{\etocpkgversion}, of \texttt{\etocpkgdate}. % START GERMAN (DEUTSCH) VERSION \bookmark[named=FirstPage,level=1]{Titelseite}% 10 octobre 2013. -\begin{center} - {\normalfont\Large Das \etoc-Paket}\\ - \textsc{Jean-François Burnol}\par - \footnotesize \ttfamily jfbu (at) free (dot) fr\\ - Paketversion: \etocDEpkgversion\ (\etocDEpkgdate) \let\thefootnote\empty - \footnote{Original Dokumentationzeitstempel: ``\etocDEdocdate''.\par +\begingroup + +\etocsetstyle{part} + {\etocskipfirstprefix} + {\ifcase\pseudomodthree{\value{partco}}% + \or \appendpart\treetok\parttok {teal!60}% first + \or \appendpart\treetok\parttok {yellow!80}% second + \else\appendpart\treetok\parttok {green!50}% third and next ... + \fi + } + {\stepcounter{partco}% + \edef\treenode{node + {\unexpanded\expandafter{\etocthelinkednumber}. + \unexpanded\expandafter{\etocthelinkedname}}}% +% grosse astuce: la première Partie ne sera pas embêtée par les trois sections +% avant car ce qu'elles auront mis dans \parttok va être effacé. + \parttok\expandafter{\treenode}} + {\ifcase\pseudomodthree{\value{partco}}% + \or \appendpart\treetok\parttok {teal!60}% first + \or \appendpart\treetok\parttok {yellow!80}% second + \else\appendpart\treetok\parttok {green!50}% third and next ... + \fi + } + +\etocsetstyle{section} + {} + {} + {% define the section node + \edef\childnode{child {node {\unexpanded\expandafter{\etocthelinkednumber} + \unexpanded\expandafter{\etocthelinkedname}}}}% + \appendtotok\parttok\childnode } + {} + +\etocsetnexttocdepth{section} + +\etocsettocstyle + {\setcounter{partco}{0}% + \treetok{\node [root concept]{\normalfont{Das \etoc-Paket}\par {\normalsize\textsc + {Jean-François Burnol}\par \ttfamily jfbu (at) free (dot) fr}\par + {\normalsize Paketversion:\par \etocDEpkgversion{} (\etocDEpkgdate )\par}}}} + {\global\appendtotok\treetok{ ;}} + +\etocinline\tableofcontents\label{toc:mindmaptitlepage} + +% \immediate\openout\TOCasTree=\jobname.toctree +% \immediate\write\TOCasTree{\the\treetok}% + +\tikzset{ + branch color/.style={ + concept color=#1!white, + every child/.append style={concept color=#1!white!30!white}, + } +}% + +\global\setbox\TitlePageMindmapTOC\hbox{% +\resizebox{.9\paperwidth}{!}{% +\begin{tikzpicture}[mindmap, + text width=2cm, + align = flush center, + growth function=\tikzmycustomgrowth, + nodes={concept}, + concept color=orange!60, + root concept/.append style={font=\huge, text width = 6cm}, + level 1/.append style={level distance=7cm, sibling angle=360/8},% 8 hard-coded mais je pourrais aussi le calculer + level 1 concept/.append style={font=\Large, text width = 3cm}, + level 2/.append style={level distance=12.5cm, sibling angle=360/35},% 35 hard coded mais je pourrais aussi le calculer + % distance par rapport au CENTRE ! (avec le code tel qu'en ce moment) + ] +\the\treetok +\end{tikzpicture}}} +\endgroup + +\indent\null +\begingroup + \let\thefootnote\empty +\footnote{Original Dokumentationzeitstempel: ``\etocDEdocdate''.\par Übersetzt ins Deutsche von Felix Baral-Weber, Jenny Rothkrämer-Vogt, Daniel Büttner, Claudia Dahl, Christian Otto und Christine Römer (FSU Jena). - Hinweise zur Übersetzung an Christine\_Roemer at t-online dot de.}\par -\end{center} + Hinweise zur Übersetzung an Christine\_Roemer at t-online dot de.} +\endgroup \setcounter{footnote}{0} +\AddToShipoutPictureFG*{% + \put(10.5cm,16.85cm) + {\makebox(0,0){\box\TitlePageMindmapTOC}}} + +\clearpage + + \etocdepthtag.toc {preamble} %---- % MAIN TOC @@ -7124,12 +7559,22 @@ wir wollen auch die korrekten |hyperref|-Hyper-Links erhalten.\footnote{Dieses Handbuch bis zu der Version vom 14. Mai 2013 verwendete das Paket |tikz-qtree|, aber es gab Probleme mit den Hyper-Links. Kein solches Problem entsteht mit |forest| oder mit der nativen Syntax |tikz| für Bäume (die im nächsten Abschnitt -dargestellt sind).} Die Hyper-Link-Informationen von \etoc setzen innen -\csa{etocname}, etc. \ldots, aber es ist nur ein Zeiger, nicht lagerungsfähig -für die spätere Verwendung; aber das Paket bietet \csa{etocthelinkednumber}, -\csa{etocthelinkedname} und \csa{etocthelinkedpage}, deren Inhalte enthalten den -Hyper-Link in einer Form, die gespeichert und später wiederverwendet werden -können. +dargestellt sind).} + +\textbf{UEBERSETZUNG NOETIG} +\begin{otherlanguage}{english} + The commands \csa{etocname}, etc\dots, are robust, it is easier to work with + \csa{etocthelinkednumber}, \csa{etocthelinkedname}, and + \csa{etocthelinkedpage} which contain the same information in an easier + accessible form. +\end{otherlanguage} +% ALT: +% Die Hyper-Link-Informationen von \etoc setzen innen +% \csa{etocname}, etc. \ldots, aber es ist nur ein Zeiger, nicht lagerungsfähig +% für die spätere Verwendung; aber das Paket bietet \csa{etocthelinkednumber}, +% \csa{etocthelinkedname} und \csa{etocthelinkedpage}, deren Inhalte enthalten den +% Hyper-Link in einer Form, die gespeichert und später wiederverwendet werden +% können. Aus diesem |forest|-Baum haben wir ganz besondere \etoc-Stile für Abschnitte und Unterabschnitte konzipiert. Sie verwenden ein symbolisches Listenregister mit @@ -7144,9 +7589,9 @@ dessen Synonym \csb{etocnopar} besteht.} Das ist der spätere Job einer \newtoks\treetok \newtoks\tmptok -\newcommand*\appendtotok[2]{% #1=toks variable, #2=macro, expands once #2 - #1\expandafter\expandafter\expandafter - {\expandafter\the\expandafter #1#2}} +% \newcommand*\appendtotok[2]{% #1=toks variable, #2=macro, expands once #2 +% #1\expandafter\expandafter\expandafter +% {\expandafter\the\expandafter #1#2}} % 7 mars: j'utilise \etocthelinkedname défini à partir de 1.07f @@ -7310,7 +7755,7 @@ Schriftsatz: \end{itemize} -\section{Das TOC als ein Molekül}\label{ssec:molecule} +\section{Das TOC als ein Molekül}\label{sec:molecule} Es ist auch möglich, einen Inhaltsverzeichnisbaum nach der TikZ-Syntax für Bäume zu konstruieren: Aber das ist eine kompliziertere Aufgabe für die \etoc @@ -7481,6 +7926,271 @@ vorherige \hyperref[toc:forest]{Forest-TOC} auch. \end{verbatim} \end{minipage} +\section{Das TOC als ein TikZ Mind-Map} +\label{sec:mindmap} + +\textbf{UEBERSETZUNG NOETIG} + +\begin{otherlanguage}{english} +This is in the same spirit as the ``molecule'' example. The use of the \eTeX{} +primitive \csa{unexpanded} will simplify the code.\footnote{The ``molecule'' +example was added to this documentation on |2013/03/03|. The ``mindmap'' +example was motivated on |2015/03/11| by +\url{http://tex.stackexchange.com/a/232584/4686}. Further help was then obtained via +\url{http://tex.stackexchange.com/q/232816/4686} and this led to the +\hyperref[toc:mindmaptitlepage]{title page} which is a further example.} + +\begingroup +%\newtoks\treetok +%\newtoks\parttok + +\newcommand*\partnode {} % just to check we don't overwrite something +%\newcommand*\childnode {} + +\newcommand*\tmprotate {} % just to check we don't overwrite something +\newcommand*\tmpoption {} % just to check we don't overwrite something +\newcommand*\tmpstuff {} % just to check we don't overwrite something + +% \newcommand*\appendtotok[2]{% #1=toks variable, #2=macro, expands once #2 +% #1\expandafter\expandafter\expandafter{\expandafter\the\expandafter #1#2}} + +\renewcommand*{\appendchildtree}[3]{% +% this is to construct "t1 child [branch color= #3]{t2}" from #1=t1 and #2=t2 +% t1 and t2 are two toks variable (not macros) +% #3 = for example teal!60 + \edef\tmpstuff {\the#1 child [branch color = #3]{\the#2}}% + #1\expandafter {\tmpstuff }% +} + +% \newcounter{partco} + +% 1,2,3,4,5,... -> 1,2,3,1,2,3,1,2,3 +% \def\pseudomodthree #1{\numexpr #1 + 3 - 3*((#1+1)/3)\relax} + +\etocsetstyle{part} + {\etocskipfirstprefix} +% This updates the global tree with the data from the previous +% part and all its children sections. Moved here because for some parts the +% sections are not displayed due to depth tags. + {\ifcase\pseudomodthree{\value{partco}}% + \or \appendchildtree\treetok\parttok {teal!60}% first + \or \appendchildtree\treetok\parttok {yellow!80}% second + \else\appendchildtree\treetok\parttok {green!50}% third and next ... + \fi + } + {\stepcounter{partco}% +% customize manually some TikZ set-up (should be done inside the TikZ thing I guess) + \def\tmpoption {}% + \def\tmprotate {}% first + \ifnum\value{partco}=5 \def\tmprotate {[counterclockwise from =-40]}\fi + \ifnum\value{partco}=8 \def\tmprotate {[counterclockwise from =-50]}\fi +% define the part node + \edef\partnode{node \tmpoption + {\unexpanded\expandafter{\etocthelinkednumber}. + \unexpanded\expandafter{\etocthelinkedname}}\tmprotate }% +% this is a starting point which will be filled it by the section children + \parttok\expandafter{\partnode}} + {\ifcase\pseudomodthree{\value{partco}}% + \or \appendchildtree\treetok\parttok {teal!60}% first + \or \appendchildtree\treetok\parttok {yellow!80}% second + \else\appendchildtree\treetok\parttok {green!50}% third and next ... + \fi + } + +\etocsetstyle{section} + {} + {} + {% define the section node + \edef\childnode{child {node {\unexpanded\expandafter{\etocthelinkednumber} + \unexpanded\expandafter{\etocthelinkedname}}}}% + % append it to the current \parttok + \appendtotok\parttok\childnode + } + {} + +\etocsettocstyle + {\setcounter{partco}{0}% + \treetok{\node [root concept]{\textbf{The \etoc documentation}}}} + {\global\appendtotok\treetok{ ;}} +% The \global above is mandatory because etoc always typesets TOC inside a group + +\etocsetnexttocdepth{section} +% use of depth tags to cut out some sections. +\etocsettagdepth {preamble} {none} +\etocsettagdepth {overview} {section} +\etocsettagdepth {arbitrarily}{part} +\etocsettagdepth {surprising} {section} +\etocsettagdepth {linestyles} {part} +\etocsettagdepth {globalcmds} {section} +\etocsettagdepth {custom} {section} +\etocsettagdepth {tips} {section} +\etocsettagdepth {code} {section} + +\tikzset{ + branch color/.style={ + concept color=#1!white, + every child/.append style={concept color=#1!white!30!white, font=\normalsize}, + } +}% + +\begin{figure}[th!] +\tableofcontents\label{toc:mindmap}% +\centeredline{\resizebox{.85\paperwidth}{!}% +{\begin{tikzpicture}[mindmap, + grow cyclic, + text width=2cm, + align=flush center, + nodes={concept}, + concept color=orange!60, + root concept/.append style={text width=4cm, font=\Large}, + level 1/.append style={level distance=5cm,sibling angle=45, text width=3cm}, + level 2/.append style={level distance=8cm,sibling angle=25, text width=3cm}, + level 1 concept/.append style={font=\normalsize}, + ] +\the\treetok +\end{tikzpicture}}} +\end{figure} +\endgroup + +It is difficult to get everything to fit on one page. However \csa{resizebox} +comes to the rescue. And it preserves hyperlinks. Nevertheless for this +example I excluded some sections from the display, using the technique of the +\etoc \hyperref[etocdepthtag.toc]{depth tags}. The fully hyperlinked TOC +appears \vpageref{toc:mindmap}. + +\begin{verbatim} +\begingroup +\newtoks\treetok +\newtoks\parttok + +\newcommand*\partnode {} % just to check we don't overwrite something +\newcommand*\childnode {} + +\newcommand*\tmprotate {} % just to check we don't overwrite something +\newcommand*\tmpoption {} % just to check we don't overwrite something +\newcommand*\tmpstuff {} % just to check we don't overwrite something + +\newcommand*\appendtotok[2]{% #1=toks variable, #2=macro, expands once #2 + #1\expandafter\expandafter\expandafter{\expandafter\the\expandafter #1#2}} + +\renewcommand*{\appendchildtree}[3]{% +% this is to construct "t1 child [branch color= #3]{t2}" from #1=t1 and #2=t2 +% t1 and t2 are two toks variable (not macros) +% #3 = for example teal!60 + \edef\tmpstuff {\the#1 child [branch color = #3]{\the#2}}% + #1\expandafter {\tmpstuff }% +} + +\newcounter{partco} + +% 1,2,3,4,5,... -> 1,2,3,1,2,3,1,2,3 +\def\pseudomodthree #1{\numexpr #1 + 3 - 3*((#1+1)/3)\relax} + +\etocsetstyle{part} + {\etocskipfirstprefix} +% This updates the global tree with the data from the previous +% part and all its children sections. Moved here because for some parts the +% sections are not displayed due to depth tags. + {\ifcase\pseudomodthree{\value{partco}}% + \or \appendchildtree\treetok\parttok {teal!60}% first + \or \appendchildtree\treetok\parttok {yellow!80}% second + \else\appendchildtree\treetok\parttok {green!50}% third and next ... + \fi + } + {\stepcounter{partco}% +% customize manually some TikZ set-up (should be done inside the TikZ thing I guess) + \def\tmpoption {}% + \def\tmprotate {}% first + \ifnum\value{partco}=5 \def\tmprotate {[counterclockwise from =-40]}\fi + \ifnum\value{partco}=8 \def\tmprotate {[counterclockwise from =-50]}\fi +% define the part node + \edef\partnode{node \tmpoption + {\unexpanded\expandafter{\etocthelinkednumber}. + \unexpanded\expandafter{\etocthelinkedname}}\tmprotate }% +% this is a starting point which will be filled it by the section children + \parttok\expandafter{\partnode}} + {\ifcase\pseudomodthree{\value{partco}}% + \or \appendchildtree\treetok\parttok {teal!60}% first + \or \appendchildtree\treetok\parttok {yellow!80}% second + \else\appendchildtree\treetok\parttok {green!50}% third and next ... + \fi + } + +\etocsetstyle{section} + {} + {} + {% define the section node + \edef\childnode{child {node {\unexpanded\expandafter{\etocthelinkednumber} + \unexpanded\expandafter{\etocthelinkedname}}}}% + % append it to the current \parttok + \appendtotok\parttok\childnode + } + {} + +\etocsettocstyle + {\setcounter{partco}{0}% + \treetok{\node [root concept]{\textbf{The \etoc documentation}}}} + {\global\appendtotok\treetok{ ;}} +% The \global above is mandatory because etoc always typesets TOC inside a group + +\etocsetnexttocdepth{section} +% use of depth tags to cut out some sections. +\etocsettagdepth {preamble} {none} +\etocsettagdepth {overview} {section} +\etocsettagdepth {arbitrarily}{part} +\etocsettagdepth {surprising} {section} +\etocsettagdepth {linestyles} {part} +\etocsettagdepth {globalcmds} {section} +\etocsettagdepth {custom} {section} +\etocsettagdepth {tips} {section} +\etocsettagdepth {code} {section} + +\tikzset{ + branch color/.style={ + concept color=#1!white, + every child/.append style={concept color=#1!white!30!white, font=\normalsize}, + } +}% + +\begin{figure}[th!] +\tableofcontents\label{toc:mindmap}% +\centeredline{\resizebox{.85\paperwidth}{!}% +{\begin{tikzpicture}[mindmap, + grow cyclic, + text width=2cm, + align=flush center, + nodes={concept}, + concept color=orange!60, + root concept/.append style={text width=4cm, font=\Large}, + level 1/.append style={level distance=5cm,sibling angle=45, text width=3cm}, + level 2/.append style={level distance=8cm,sibling angle=25, text width=3cm}, + level 1 concept/.append style={font=\normalsize}, + ] +\the\treetok +\end{tikzpicture}}} +\end{figure} +\endgroup +\end{verbatim} + +An interesting alternative is to use \etoc rather to convert the entire TOC +into a TikZ tree (perhaps excluding some parts) and print it out to a file +from which it can be recovered and manipulated directly by the author of the +document. Things written to the |.log| file get broken into lines. Here is a +technique to get non-broken output. Once the \csa{treetok} has been computed +by \etoc (as in the \hyperref[toc:molecule]{molecule} example, or the current +example), this code snippet will write it out to file with extension +|.toctree|: +\begin{verbatim} + \newwrite\TOCasTree + \immediate\openout\TOCasTree=\jobname.toctree + \immediate\write\TOCasTree{\the\treetok}% +\end{verbatim} +The author can then copy it from there and customize it manually to get a +suitable tikz picture. + +\end{otherlanguage} + + \section{Das TOC als eine Tabelle} \label{sec:tocastable} @@ -7496,11 +8206,6 @@ 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 @@ -7523,21 +8228,21 @@ simply now with |1.08|. The code follows. \etocsetstyle{part} {} {\\\hline} - {\strut\etocthelinkednumber &\bfseries\etocthelinkedname - &\etocthelinkedpage } + {\strut\etocnumber &\bfseries\etocname + &\etocpage } {} \etocsetstyle{section} {} {\etociffirst{\etocifnumbered{\\\hline}{\\\hline\hline}}{\\}} - {\etocthelinkednumber&\etocthelinkedname &\etocthelinkedpage } + {\etocnumber&\etocname &\etocpage } {} \etocsetstyle{subsection} {} {\\} - {&\makebox[1cm][c]{\etocthelinkednumber}% + {&\makebox[1cm][c]{\etocnumber}% \parbox[t]{\dimexpr6cm-\tabcolsep\relax} - {\sloppy\itshape\etocthelinkedname\strut}% - &\itshape\etocthelinkedpage } + {\sloppy\itshape\etocname\strut}% + &\itshape\etocpage } {} \etocsettocstyle {\hypersetup{hidelinks}% @@ -7553,34 +8258,29 @@ simply now with |1.08|. The code follows. \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 +\etocglobaldefs % necessary for \etocname etc... to survive & % observe the locations of the \\ \etocsetstyle{part} {} {\\\hline} - {\strut\etocthelinkednumber &\bfseries\etocthelinkedname - &\etocthelinkedpage } + {\strut\etocnumber &\bfseries\etocname + &\etocpage } {} \etocsetstyle{section} {} {\etociffirst{\etocifnumbered{\\\hline}{\\\hline\hline}}{\\}} - {\etocthelinkednumber&\etocthelinkedname &\etocthelinkedpage } + {\etocnumber&\etocname &\etocpage } {} \etocsetstyle{subsection} {} {\\} - {&\makebox[1cm][c]{\etocthelinkednumber}% + {&\makebox[1cm][c]{\etocnumber}% \parbox[t]{\dimexpr6cm-\tabcolsep\relax} - {\sloppy\itshape\etocthelinkedname\strut}% - &\itshape\etocthelinkedpage } + {\sloppy\itshape\etocname\strut}% + &\itshape\etocpage } {} \etocsettocstyle @@ -7647,9 +8347,7 @@ contents. \etocsetstyle{section} {} {\etociffirst{\\\hline\hline}{\\\hline}} - {\etocthelinkedname& - \etocthelinkednumber& - \etocthelinkedpage } + {\etocname& \etocnumber&\etocpage } {} \etocsettocstyle @@ -7670,9 +8368,7 @@ contents. \etocsetstyle{section} {} {\etociffirst{\\\hline\hline}{\\\hline}} - {\etocthelinkedname& - \etocthelinkednumber& - \etocthelinkedpage } + {\etocname & \etocnumber & \etocpage } {} \etocsettocstyle @@ -7903,7 +8599,7 @@ benutzt. Dabei ist festzuhalten, dass \csa{etocnumber} ein robuster Befehl ist, was erklärt, warum er in der Label-Spezifikation benutzt werden kann, ohne |\protect| hinzuzufügen. -\subsubsection{Der \csbhyp{etocifnumbered}-Schalter} +\subsection{Der \csbhyp{etocifnumbered}-Schalter} \label{etocifnumbered} \label{etocxifnumbered} @@ -8002,9 +8698,14 @@ Ebenfalls bereit gestellt mit ähnlichen Funktionen: \csa{etocthelinkednumber}, zu dieser Seitenzahl hinzugefügt hat) und \csa{etocthelink}\marg{linkname}, welches es erlaubt einen Link mit einem beliebigen Name zu erstellen. -All diese Befehle sind \emph{nicht} robust. +All diese Befehle sind \emph{nicht} robust. +\textbf{UEBERSETZUNG NOETIG} +\begin{otherlanguage}{english} + In fact starting with |1.08a|, \csa{etocname} +is exactly the robust variant of \csa{etocthelinkedname} +\end{otherlanguage} -Beispiel\begingroup\ +Veralteter Beispiel\begingroup\ \etocsetstyle {section} {\begin{itemize*}[itemjoin={{; }}, itemjoin*={{, und }}]} {\global\let\TmpEtocNumber\etocthelinkednumber @@ -8020,7 +8721,7 @@ Beispiel\begingroup\ \endgroup \begin{verbatim} -Beispiel\begingroup +Veralteter Beispiel\begingroup \etocsetstyle {section} {\begin{itemize*}[itemjoin={{; }}, itemjoin*={{, und }}]} {\global\let\TmpEtocNumber\etocthelinkednumber @@ -8043,8 +8744,8 @@ Beispiel\begingroup\etocglobaldefs % <-- NEU mit etoc 1.08. \etocsetstyle {section} {\begin{itemize*}[itemjoin={{; }}, itemjoin*={{, und }}]} {} - {\item [{\bfseries\etocthelinkednumber.}] - \etocthelinkedname\ (\emph{S. \etocthelinkedpage })} + {\item [{\bfseries\etocnumber.}] + \etocname\ (\emph{S. \etocpage })} {\end{itemize*}.}% \etocsetnexttocdepth {section}% \etocsettocstyle {(ein Inhaltsverzeichnis als eine Inline-% @@ -8056,8 +8757,8 @@ Beispiel\begingroup\etocglobaldefs % <-- NEU mit etoc 1.08. \etocsetstyle {section} {\begin{itemize*}[itemjoin={{; }}, itemjoin*={{, und }}]} {} - {\item [{\bfseries\etocthelinkednumber.}] - \etocthelinkedname\ (\emph{S. \etocthelinkedpage })} + {\item [{\bfseries\etocnumber.}] + \etocname\ (\emph{S. \etocpage })} {\end{itemize*}.}% \etocsetnexttocdepth {section}% \etocsettocstyle {(ein Inhaltsverzeichnis als eine Inline-% @@ -9241,7 +9942,7 @@ ist oder keiner). Allerdings kann man dann nichts an der Schriftart oder Farbe \csa{sbox} würde die Farbe Farbe um das ohne Boxen gespeicherte Feld verändern). Wenn eine solche Notwendigkeit entsteht, muss man von der Boxenverwendung zum Makro nehmen wechseln und die |hyperref|-Daten für später speichern, wie im oben -im Code von \autoref{ssec:molecule} vorgestellt. Wir präsentieren auch diese +im Code von \autoref{sec:molecule} vorgestellt. Wir präsentieren auch diese zweite Methode. Aber als Erstes der Code von \csa{thispartstats}:\par @@ -9555,6 +10256,9 @@ 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. + +Note: rather than |\toks| registers it would be easier here to use \eTeX{} +\csa{unexpanded} primitive. See for example \autoref{sec:mindmap}. \end{otherlanguage} @@ -9736,13 +10440,15 @@ Die \csa{etocname}, \csa{etocnumber}, \csa{etocpage} Befehle sind gegen vorzeitige Expansion geschützt. Sie enthalten geeignete |hyperref|-Links, wenn das Paket |hyperref| geladen und aktiviert für das TOC ist. Die Befehle \csa{etoclink} und \csa{etocifnumbered} sind auch gegen vorzeige Expansion -geschützt. +geschützt. Auch \csb{etociffirst} und \csb{etoctoccontentsline}. -Andererseits \csa{etocthename}, \csa{etocthenumber}, \csa{etocthepage}, haben +Andererseits \csb{etocthename}, \csb{etocthenumber}, \csb{etocthepage}, haben keine Anbindung an |hyperref|-Links und sind nicht gegen Expansionen geschützt. +Und \csb{etocthelinkedname}, \csb{etocthelinkednumber}, +\csb{etocthelinkedpage} sind auch nicht gegen Expansionen geschützt. -Befehle wie \csa{etocsetstyle}, \csa{etocsetlevel}, \csa{etocsettocstyle}, -\csa{etocmulticolstyle}, \csa{etocruledstyle}, \csa{etocframedstyle} folgen +Befehle wie \csb{etocsetstyle}, \csb{etocsetlevel}, \csb{etocsettocstyle}, +\csb{etocmulticolstyle}, \csb{etocruledstyle}, \csb{etocframedstyle} folgen Gruppierungen von \LaTeX. Alle TOCs werden in Gruppierungen gesetzt. \subsection{Fehler und Katastrophen} @@ -9847,6 +10553,21 @@ Paketversion ist \texttt{\etocDEpkgversion} von \texttt{\etocDEpkgdate}. \begin{multicols}{2} \begin{jfverbatim} +v1.08a [2015/03/13]^ + + \etocname, \etocnumber and \etocpage are now the robust + variants of \etocthelinkedname, \etocthelinkednumber and + \etocthelinkedpage. This should arguably have been done since + the addition of the latter to etoc with v1.07f [2013/03/07]. + The earlier \etocname etc... contained the hyperlink + destination only in an unexpanded form. + + The documentation has a brand new title page and a new section + The TOC as a TikZ mind map both illustrating further uses of + etoc to display tables of contents as trees in an automatic + manner. + + v1.08 [2015/03/10]^ \etocskipfirstprefix may now appear anywhere in the <start> @@ -10614,17 +11335,22 @@ v1.02 [2012/11/18]^ % Then |1.07| added \csa{etocthename}, \csa{etocthenumber}, \csa{etocthepage} % which are left fragile and do not have the links data, and % \csa{etoclink}\marg{linkname} which is robust and reconstructs an arbitrarily -% named link. A need (for things like building up a token list to be used in a -% |tikzpicture|) arose later to have some form of the link which could be saved -% by a simple command like one can do |\global\let\lastname\etocthename|, and -% avoid having to manipulate \csa{Hy@tocdestname}. So |1.07f| adds -% \csa{etocthelinkedname}, \csa{etocthelinkednumber}, \csa{etocthelinkedpage}, -% \csa{etocthelink}: they use \csa{hyperlink} with an expanded -% \csa{Hy@tocdestname}. +% named link. % -% One could now define \csa{etocname}, etc ... to be the robust versions of -% \csa{etocthelinkedname}, etc ..., but the original definitions are kept by -% sentimentalism. |1.07f| also adds \csa{leavevmode} to \csa{etoclink} which +% A need (for things like building up a token list to be used in a +% |tikzpicture|) arose later to have some form of the link which could be +% saved by a simple command like one can do +% |\global\let\lastname\etocthename|, and avoid having to manipulate +% \csa{Hy@tocdestname}. So |1.07f| adds \csa{etocthelinkedname}, +% \csa{etocthelinkednumber}, \csa{etocthelinkedpage}, \csa{etocthelink}: they +% use \csa{hyperlink} with an expanded \csa{Hy@tocdestname}. +% +% |1.08a|: I delayed from |2013/03/07| to release |1.08a| of |2015/03/13| the +% obvious decision to convert \csa{etocname}, etc ... to be the robust +% versions of \csa{etocthelinkedname}, etc ..., for sentimental reason. But +% the earlier variants contained the hyperref destination in unexpanded form. +% +% |1.07f| also adds \csa{leavevmode} to \csa{etoclink} which % should have been done earlier, as it was included in \csa{etocname} etc... % % attention, \csa{@namedef}|{A}{B}| and not \csa{@namedef}|{A} {B}| !! @@ -10633,21 +11359,26 @@ v1.02 [2012/11/18]^ % code), a \csa{@firstofone} construct is however the simplest of all. % % |2015/03/09|: |1.08| adds |\Etoc@global| prefix. +% +% |2015/03/13|: |1.08a| drops the original constructions of |\etocname| etc... +% which contained an unexpanded hyperref destination. % \begin{macrocode} \def\Etoc@lxyz #1#2{% - \Etoc@global\@namedef {etoclink }{\leavevmode}% fall-back - \Etoc@global\let\etocthelink \@empty % fall-back - \Etoc@global\@namedef {etocname }{\leavevmode #1}% fall-back (perhaps linked) - \Etoc@global\def\etocthename {#1}% (if link, will be removed later) - \Etoc@global\def\etocthelinkedname {#1}% will probably get redefined - \Etoc@global\@namedef {etocpage }{\leavevmode #2}% (perhaps linked) - \Etoc@getthepage #2\etoc@ % defines also \etocthelinkedpage (and \etoclink) - \Etoc@getnb #1\relax\relax\etoc@ % gets number *and* name, and \etoclink - \ifEtoc@number\else + \Etoc@global\@namedef {etoclink }{\leavevmode}% fall-back + \Etoc@global\let\etocthelink \@empty % fall-back + \Etoc@global\def\etocthename {#1}% (if link, will be removed later) + \Etoc@global\def\etocthelinkedname {#1}% will probably get redefined + \Etoc@getthepage #2\etoc@ % defines \etocthelinkedpage (and \etoclink) + \Etoc@getnb #1\relax\relax\etoc@ % gets number *and* name, and \etoclink + \ifEtoc@number\else \ifnum\Etoc@level=\m@ne \Etoc@getit #1\hspace\relax\etoc@ % additional job for parts \fi - \fi} + \fi + \Etoc@global\expandafter\let\csname etocname \endcsname\etocthelinkedname + \Etoc@global\expandafter\let\csname etocnumber \endcsname\etocthelinkednumber + \Etoc@global\expandafter\let\csname etocpage \endcsname\etocthelinkedpage + } % \end{macrocode} % |1.08| adds the |\Etoc@global|'s. % \begin{macrocode} @@ -10676,9 +11407,8 @@ v1.02 [2012/11/18]^ % \begin{macrocode} \def\Etoc@getthepage@hyp #1#2#3#4#5\etoc@ {% \Etoc@global\@namedef{etoclink }##1{\leavevmode #1{#2}{#3}{##1}#5}% - \Etoc@global\edef\etocthelink ##1{\noexpand\hyperlink {#3}{##1}}% \Etoc@global\def\etocthepage {#4}% - \edef\Etoc@tmp {{#3}}% + \edef\Etoc@tmp {{#3}}% \Etoc@global\expandafter\def\expandafter\etocthelinkedpage\expandafter {\expandafter\hyperlink \Etoc@tmp{#4}}% } @@ -10703,18 +11433,15 @@ v1.02 [2012/11/18]^ % \begin{macrocode} \def\Etoc@getnb@nohyp #1#2#3\etoc@ {% \def\Etoc@getname ##1\relax\relax\etoc@ {% - \Etoc@global\@namedef {etocname }{\leavevmode ##1}% \Etoc@global\def\etocthename {##1}% \Etoc@global\def\etocthelinkedname {##1}% }% \ifx #1\numberline - \Etoc@global\@namedef {etocnumber }{\leavevmode #2}% \Etoc@global\def\etocthenumber {#2}% \Etoc@global\def\etocthelinkednumber {#2}% \Etoc@global\Etoc@numbertrue \Etoc@getname #3\etoc@ \else % then \etocthename and \etocthelinkedname already defined - \Etoc@global\@namedef {etocnumber }{\leavevmode}% \Etoc@global\let\etocthenumber \@empty \Etoc@global\let\etocthelinkednumber \@empty \Etoc@global\Etoc@numberfalse @@ -10725,8 +11452,7 @@ v1.02 [2012/11/18]^ % the |\Etoc@global|'s. % \begin{macrocode} \def\Etoc@getnb@hyp #1#2#3#4#5#6\etoc@ {% - \Etoc@global\def\Etoc@getname ##1\relax\relax\etoc@ {% - \Etoc@global\@namedef {etocname }{\leavevmode #1{#2}{#3}{##1}#5}% + \def\Etoc@getname ##1\relax\relax\etoc@ {% \Etoc@global\def\etocthename {##1}% \edef\Etoc@tmp {{#3}}% \Etoc@global\expandafter\def\expandafter\etocthelinkedname\expandafter @@ -10734,7 +11460,6 @@ v1.02 [2012/11/18]^ }% \def\Etoc@getnbr ##1##2##3\etoc@ {% \ifx ##1\numberline - \Etoc@global\@namedef {etocnumber }{\leavevmode #1{#2}{#3}{##2}#5}% \Etoc@global\def\etocthenumber {##2}% \edef\Etoc@tmp {{#3}}% \Etoc@global\expandafter\def\expandafter\etocthelinkednumber @@ -10742,7 +11467,6 @@ v1.02 [2012/11/18]^ \Etoc@global\Etoc@numbertrue \Etoc@getname ##3\etoc@ \else - \Etoc@global\@namedef {etocnumber }{\leavevmode}% \Etoc@global\let\etocthenumber \@empty \Etoc@global\let\etocthelinkednumber \@empty \Etoc@global\Etoc@numberfalse @@ -10761,12 +11485,10 @@ v1.02 [2012/11/18]^ % \begin{macrocode} \def\Etoc@getit@nohyp #1\hspace#2#3\etoc@ {% \def\Etoc@getname ##1\hspace\relax\etoc@ {% - \Etoc@global\@namedef {etocname }{\leavevmode ##1}% \Etoc@global\def\etocthename {##1}% \Etoc@global\def\etocthelinkedname {##1}% }% \ifx\relax#2\else - \Etoc@global\@namedef {etocnumber }{\leavevmode #1}% \Etoc@global\def\etocthenumber {#1}% \Etoc@global\def\etocthelinkednumber {#1}% \Etoc@global\Etoc@numbertrue @@ -10779,7 +11501,6 @@ v1.02 [2012/11/18]^ % \begin{macrocode} \def\Etoc@getit@hyp #1#2#3#4#5#6\etoc@ {% \def\Etoc@getname ##1\hspace\relax\etoc@ {% - \Etoc@global\@namedef {etocname }{\leavevmode #1{#2}{#3}{##1}#5}% \Etoc@global\def\etocthename {##1}% \edef\Etoc@tmp {{#3}}% \Etoc@global\expandafter\def\expandafter\etocthelinkedname @@ -10787,7 +11508,6 @@ v1.02 [2012/11/18]^ }% \def\Etoc@getnbr ##1\hspace##2##3\etoc@ {% \ifx\relax##2\else - \Etoc@global\@namedef {etocnumber }{\leavevmode #1{#2}{#3}{##1}#5}% \Etoc@global\def\etocthenumber {##1}% \edef\Etoc@tmp {{#3}}% \Etoc@global\expandafter\def\expandafter\etocthelinkednumber @@ -10799,7 +11519,8 @@ v1.02 [2012/11/18]^ \Etoc@getnbr #4\hspace\relax\etoc@ } % \end{macrocode} -% placeholder for comments +% |1.08a| of |2015/03/12| does the long-postponed thing to let |\etocname| +% etc.. be simply the robust variant of |\etocthelinkedname| etc... % \begin{macrocode} \let\etocthename \@empty \let\etocthenumber \@empty @@ -10817,10 +11538,10 @@ v1.02 [2012/11/18]^ \expandafter\let\expandafter\etocxifnumbered\csname etocifnumbered \endcsname % \end{macrocode} % |1.08| defines |\etociffirst| +% \begin{macrocode} \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} @@ -10839,7 +11560,7 @@ v1.02 [2012/11/18]^ % \begin{macrocode} \Etoc@toctoks {}% (superfluous, but for clarity) \AtBeginDocument{\IfFileExists{\jobname.toc} - {{\endlinechar=-1 + {{\endlinechar=\m@ne \makeatletter \newread\Etoc@tf \openin\Etoc@tf\@filef@und @@ -11912,7 +12633,7 @@ v1.02 [2012/11/18]^ Grave accent \` Left brace \{ Vertical bar \| Right brace \} Tilde \~} -\CheckSum{3061} +\CheckSum{3053} \csname check@checksum\endcsname \Finale diff --git a/Master/texmf-dist/source/generic/etoc/etoc.ins b/Master/texmf-dist/source/latex/etoc/etoc.ins index 7e292525a27..a7a3e92da1b 100644 --- a/Master/texmf-dist/source/generic/etoc/etoc.ins +++ b/Master/texmf-dist/source/latex/etoc/etoc.ins @@ -1,14 +1,14 @@ %% %% Package: etoc -%% Version: 1.08 (2015/03/10) +%% Version: 1.08a (2015/03/13) %% License: LPPL 1.3c or later (see etoc.dtx) %% Copyright (C) 2012-2015 Jean-Francois Burnol <jfbu at free dot fr> %% Copyright (C) 2014-2015 Christine Roemer <Christine_Roemer at t-online dot de> %% and collaborators for the translation into German of the documentation %% -\def\etocpkgdate {2015/03/10} -\def\etocdocdate {2015/03/10} -\def\etocpkgversion {v1.08} +\def\etocpkgdate {2015/03/13} +\def\etocdocdate {2015/03/13} +\def\etocpkgversion {v1.08a} \def\etocpkgdescription {Completely customisable TOCs (jfB)} %% Run tex on this file to extract from etoc.dtx: %% etoc.sty, etoc.tex, etoc-DE.tex and README.md diff --git a/Master/texmf-dist/tex/generic/etoc/etoc.sty b/Master/texmf-dist/tex/latex/etoc/etoc.sty index 172af134d4e..867aa9278fd 100644 --- a/Master/texmf-dist/tex/generic/etoc/etoc.sty +++ b/Master/texmf-dist/tex/latex/etoc/etoc.sty @@ -23,10 +23,10 @@ %% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{etoc} - [2015/03/10 v1.08 Completely customisable TOCs (jfB)] + [2015/03/13 v1.08a Completely customisable TOCs (jfB)] %% %% Package: etoc -%% Version: 1.08 (2015/03/10) +%% Version: 1.08a (2015/03/13) %% 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> @@ -296,19 +296,21 @@ \Etoc@et@hop{\Etoc@prefix\Etoc@contents}{\Etoc@savedcontentsline{#1}}% } \def\Etoc@lxyz #1#2{% - \Etoc@global\@namedef {etoclink }{\leavevmode}% fall-back - \Etoc@global\let\etocthelink \@empty % fall-back - \Etoc@global\@namedef {etocname }{\leavevmode #1}% fall-back (perhaps linked) - \Etoc@global\def\etocthename {#1}% (if link, will be removed later) - \Etoc@global\def\etocthelinkedname {#1}% will probably get redefined - \Etoc@global\@namedef {etocpage }{\leavevmode #2}% (perhaps linked) - \Etoc@getthepage #2\etoc@ % defines also \etocthelinkedpage (and \etoclink) - \Etoc@getnb #1\relax\relax\etoc@ % gets number *and* name, and \etoclink - \ifEtoc@number\else + \Etoc@global\@namedef {etoclink }{\leavevmode}% fall-back + \Etoc@global\let\etocthelink \@empty % fall-back + \Etoc@global\def\etocthename {#1}% (if link, will be removed later) + \Etoc@global\def\etocthelinkedname {#1}% will probably get redefined + \Etoc@getthepage #2\etoc@ % defines \etocthelinkedpage (and \etoclink) + \Etoc@getnb #1\relax\relax\etoc@ % gets number *and* name, and \etoclink + \ifEtoc@number\else \ifnum\Etoc@level=\m@ne \Etoc@getit #1\hspace\relax\etoc@ % additional job for parts \fi - \fi} + \fi + \Etoc@global\expandafter\let\csname etocname \endcsname\etocthelinkedname + \Etoc@global\expandafter\let\csname etocnumber \endcsname\etocthelinkednumber + \Etoc@global\expandafter\let\csname etocpage \endcsname\etocthelinkedpage + } \def\Etoc@getthepage #1{% \let\Etoc@next\Etoc@getthepage@nohyp \ifEtoc@hyperref\ifx #1\hyper@linkstart @@ -322,9 +324,8 @@ } \def\Etoc@getthepage@hyp #1#2#3#4#5\etoc@ {% \Etoc@global\@namedef{etoclink }##1{\leavevmode #1{#2}{#3}{##1}#5}% - \Etoc@global\edef\etocthelink ##1{\noexpand\hyperlink {#3}{##1}}% \Etoc@global\def\etocthepage {#4}% - \edef\Etoc@tmp {{#3}}% + \edef\Etoc@tmp {{#3}}% \Etoc@global\expandafter\def\expandafter\etocthelinkedpage\expandafter {\expandafter\hyperlink \Etoc@tmp{#4}}% } @@ -344,26 +345,22 @@ } \def\Etoc@getnb@nohyp #1#2#3\etoc@ {% \def\Etoc@getname ##1\relax\relax\etoc@ {% - \Etoc@global\@namedef {etocname }{\leavevmode ##1}% \Etoc@global\def\etocthename {##1}% \Etoc@global\def\etocthelinkedname {##1}% }% \ifx #1\numberline - \Etoc@global\@namedef {etocnumber }{\leavevmode #2}% \Etoc@global\def\etocthenumber {#2}% \Etoc@global\def\etocthelinkednumber {#2}% \Etoc@global\Etoc@numbertrue \Etoc@getname #3\etoc@ \else % then \etocthename and \etocthelinkedname already defined - \Etoc@global\@namedef {etocnumber }{\leavevmode}% \Etoc@global\let\etocthenumber \@empty \Etoc@global\let\etocthelinkednumber \@empty \Etoc@global\Etoc@numberfalse \fi } \def\Etoc@getnb@hyp #1#2#3#4#5#6\etoc@ {% - \Etoc@global\def\Etoc@getname ##1\relax\relax\etoc@ {% - \Etoc@global\@namedef {etocname }{\leavevmode #1{#2}{#3}{##1}#5}% + \def\Etoc@getname ##1\relax\relax\etoc@ {% \Etoc@global\def\etocthename {##1}% \edef\Etoc@tmp {{#3}}% \Etoc@global\expandafter\def\expandafter\etocthelinkedname\expandafter @@ -371,7 +368,6 @@ }% \def\Etoc@getnbr ##1##2##3\etoc@ {% \ifx ##1\numberline - \Etoc@global\@namedef {etocnumber }{\leavevmode #1{#2}{#3}{##2}#5}% \Etoc@global\def\etocthenumber {##2}% \edef\Etoc@tmp {{#3}}% \Etoc@global\expandafter\def\expandafter\etocthelinkednumber @@ -379,7 +375,6 @@ \Etoc@global\Etoc@numbertrue \Etoc@getname ##3\etoc@ \else - \Etoc@global\@namedef {etocnumber }{\leavevmode}% \Etoc@global\let\etocthenumber \@empty \Etoc@global\let\etocthelinkednumber \@empty \Etoc@global\Etoc@numberfalse @@ -395,12 +390,10 @@ } \def\Etoc@getit@nohyp #1\hspace#2#3\etoc@ {% \def\Etoc@getname ##1\hspace\relax\etoc@ {% - \Etoc@global\@namedef {etocname }{\leavevmode ##1}% \Etoc@global\def\etocthename {##1}% \Etoc@global\def\etocthelinkedname {##1}% }% \ifx\relax#2\else - \Etoc@global\@namedef {etocnumber }{\leavevmode #1}% \Etoc@global\def\etocthenumber {#1}% \Etoc@global\def\etocthelinkednumber {#1}% \Etoc@global\Etoc@numbertrue @@ -409,7 +402,6 @@ } \def\Etoc@getit@hyp #1#2#3#4#5#6\etoc@ {% \def\Etoc@getname ##1\hspace\relax\etoc@ {% - \Etoc@global\@namedef {etocname }{\leavevmode #1{#2}{#3}{##1}#5}% \Etoc@global\def\etocthename {##1}% \edef\Etoc@tmp {{#3}}% \Etoc@global\expandafter\def\expandafter\etocthelinkedname @@ -417,7 +409,6 @@ }% \def\Etoc@getnbr ##1\hspace##2##3\etoc@ {% \ifx\relax##2\else - \Etoc@global\@namedef {etocnumber }{\leavevmode #1{#2}{#3}{##1}#5}% \Etoc@global\def\etocthenumber {##1}% \edef\Etoc@tmp {{#3}}% \Etoc@global\expandafter\def\expandafter\etocthelinkednumber @@ -456,7 +447,7 @@ } \Etoc@toctoks {}% (superfluous, but for clarity) \AtBeginDocument{\IfFileExists{\jobname.toc} - {{\endlinechar=-1 + {{\endlinechar=\m@ne \makeatletter \newread\Etoc@tf \openin\Etoc@tf\@filef@und |