diff options
author | Karl Berry <karl@freefriends.org> | 2012-11-20 01:11:37 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2012-11-20 01:11:37 +0000 |
commit | 6c960e7402ad996080bddee70b48625460f46d8e (patch) | |
tree | 8816c3b046675fd7d56318ee8a777185ea2d54af /Master | |
parent | cc3b3e30a405dc4ba1b36052935e2ff77424dca7 (diff) |
etoc (19nov12)
git-svn-id: svn://tug.org/texlive/trunk@28304 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r-- | Master/texmf-dist/doc/latex/etoc/README | 44 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/etoc/etoc.pdf | bin | 0 -> 110620 bytes | |||
-rw-r--r-- | Master/texmf-dist/source/latex/etoc/etoc.dtx | 1719 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/etoc/etoc.ins | 31 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/etoc/etoc.sty | 719 | ||||
-rwxr-xr-x | Master/tlpkg/bin/tlpkg-ctan-check | 2 | ||||
-rw-r--r-- | Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc | 1 | ||||
-rw-r--r-- | Master/tlpkg/tlpsrc/etoc.tlpsrc | 0 |
8 files changed, 2515 insertions, 1 deletions
diff --git a/Master/texmf-dist/doc/latex/etoc/README b/Master/texmf-dist/doc/latex/etoc/README new file mode 100644 index 00000000000..16d04ba2d34 --- /dev/null +++ b/Master/texmf-dist/doc/latex/etoc/README @@ -0,0 +1,44 @@ + + Package `etoc' + + This file may be distributed and/or modified under the + conditions of the LaTeX Project Public License, either + version 1.2 of this license or (at your option) any later + version. The latest version of this license is in: + + http://www.latex-project.org/lppl.txt + + and version 1.2 or later is part of all distributions of + LaTeX version 1999/12/01 or later. + + Copyright (C) 2012 by Jean-Francois Burnol + + Time-stamp: <18-11-2012 19:35:19 CET jfb> + + Installation + + `latex etoc.dtx' creates (among others) the file `etoc.sty'. + `latex etoc.dtx' (again) finishes producing the documentation. + + Put `etoc.sty' in a suitable location within the TeX installation: + etoc.sty -> ..suitable..path..to../tex/latex/etoc/ + + The other generated files may be discarded. + + Abstract + + The etoc package gives 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 + as an example, next to the standard formatting inherited from the + LaTeX document classes. But the idea is to give the means to the + user to delegate the details to packages dealing with list making + environments (such as enumitem). Regarding the global style, etoc + typesets by default tables of contents in a multi-column format, + with either a standard heading, or a ruled title, optionally with + a frame around the table of contents. The \tableofcontents command + can be used arbitrarily many times in the same document, and comes + with a starred variant which gives local table of contents. + 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..61e7de709b8 --- /dev/null +++ b/Master/texmf-dist/doc/latex/etoc/etoc.pdf diff --git a/Master/texmf-dist/source/latex/etoc/etoc.dtx b/Master/texmf-dist/source/latex/etoc/etoc.dtx new file mode 100644 index 00000000000..3a4ee52d1b5 --- /dev/null +++ b/Master/texmf-dist/source/latex/etoc/etoc.dtx @@ -0,0 +1,1719 @@ +% ^^A -*- coding: iso-latin-1; -*- +% \iffalse meta-comment +% +% This file may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either +% version 1.2 of this license or (at your option) any later +% version. The latest version of this license is in: +% +% http://www.latex-project.org/lppl.txt +% +% and version 1.2 or later is part of all distributions of +% LaTeX version 1999/12/01 or later. +% +%% Copyright (C) 2012 by Jean-Francois Burnol +% +% Time-stamp: <18-11-2012 19:35:19 CET jfb> +% +% Installation +% +% `latex etoc.dtx' creates (among others) the file `etoc.sty'. +% `latex etoc.dtx' (again) finishes producing the documentation. +% +% Put `etoc.sty' in a suitable location within the TeX installation: +% etoc.sty -> ..suitable..path..to../tex/latex/etoc/ +% +% The other generated files may be discarded. +% +% \fi +% +% \CheckSum{1873} +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} +% +% +% \iffalse +% +%<*driver> +\def\pkgdate{2012/11/18}% +\def\pkgversion{v1.02}% +%</driver> +% +%<*batchfile> +\begin{filecontents*}{etoc.ins} +%% Package `etoc' by Jean-Francois Burnol +%% +%% This file `etoc.ins' is provided for compatibility reasons with +%% TeX installations expecting to find an .ins file +%% +%% It can be used as usual: +%% +%% `latex etoc.ins' extracts `etoc.sty' from `etoc.dtx' +%% +%% But doing directly `latex etoc.dtx' already creates `etoc.sty' +%% +%% `latex etoc.dtx' generates `etoc.sty' (and also `etoc.ins') +%% `latex etoc.dtx' finishes generating the documentation +%% +%% In all cases, put the generated `etoc.sty' file in a suitable +%% location within the TeX installation: +%% etoc.sty -> ................/tex/latex/etoc/ +%% +%% Generated auxiliary files may then be discarded. +%% +\def\batchfile{etoc.ins} +\input docstrip.tex +\askforoverwritefalse +\def\jfpreamble{\defaultpreamble^^J\MetaPrefix^^J% +\string\ProvidesPackage{etoc}^^J% +\space[2012/11/18\space v1.02\space easily customizable TOCs (jfB)]} +\def\jfpostamble{\MetaPrefix\space End of file `\outFileName'.} +\generate{\usepreamble\jfpreamble +\file{etoc.sty}{\from{etoc.dtx}{package}} +\usepostamble\jfpostamble} +\endbatchfile +\end{filecontents*} +\begingroup +\input docstrip.tex +\askforoverwritefalse +\def\jfpreamble{\defaultpreamble^^J\MetaPrefix^^J% +\string\ProvidesPackage{etoc}^^J% +\space[\pkgdate\space\pkgversion\space easily customizable TOCs (jfB)]} +\def\jfpostamble{\MetaPrefix\space End of file `\outFileName'.} +\generate{\usepreamble\jfpreamble +\file{etoc.sty}{\from{etoc.dtx}{package}} +\usepostamble\jfpostamble} +\endgroup +%</batchfile> +% +%<*driver> +\ProvidesFile{etoc.dtx}[\pkgdate\space\pkgversion\space + etoc source and documentation (jfB)] +\documentclass[a4paper,12pt]{ltxdoc} +%\OnlyDescription +\usepackage[latin1]{inputenc} +\usepackage[T1]{fontenc} +\usepackage[hscale=0.66,vscale=0.75]{geometry} +\usepackage{txfonts} +\usepackage{xspace} +\usepackage{multicol} +\usepackage{enumitem} +\usepackage{color} +\definecolor{joli}{RGB}{225,95,0} +\renewcommand\partname{Part} +\usepackage[%dvipdfmx,% +pdfencoding=pdfdoc,% +bookmarks=true,% +]{hyperref} +\hypersetup{% +linktoc=all,% +breaklinks=true,% +hidelinks,% +pdfauthor={Jean-Fran\c cois Burnol},% +pdftitle={The etoc package},% +pdfsubject={LaTeX, table of contents},% +pdfkeywords={LaTeX, table of contents},% +pdfstartview=FitH,% +pdfpagemode=UseOutlines} +\usepackage{etoc} +\newcommand\etoc{% +\texorpdfstring{{\color{joli}\ttfamily\bfseries etoc}\xspace} +{\textbackslash etoc\xspace}} +\renewcommand\cs[1]{\texorpdfstring{\csi{#1}}{\textbackslash #1}} +\newcommand\csb[1]{\texorpdfstring{\csbi{#1}}{\textbackslash #1}} +\newcommand\csi[1]{{\ttfamily\hyphenchar\font45\char92#1}} +\newcommand\csbi[1]{{\color{blue}\ttfamily\hyphenchar\font45\char92#1}} +\renewcommand\star{{\ttfamily \raisebox{-.25\height}{*}}} +\newcommand\starit[1]{\csi{#1}\star} +\newcommand\staritb[1]{{\color{blue}\csi{#1}\star}} +\newcommand\tocstar{\starit{tableofcontents}\xspace} +\newcommand\tocstarb{\staritb{tableofcontents}\xspace} +\hyphenation{sec-num-depth toc-num-depth etoc-set-style etoc-set-level +etoc-set-toc-style etoc-if-num-bered etoc-name etoc-page etoc-number +etoc-framed-style etoc-multi-col-style etoc-ruled-style +etoc-skip-first-pre-fix} +\frenchspacing +\renewcommand\familydefault\sfdefault +\begin{document} +\DocInput{etoc.dtx} +\end{document} +%</driver> +% +% \fi +% \rmfamily +% \begin{center} +% {\normalfont\Large The \etoc package}\\ +% \textsc{Jean-François Burnol}\par +% \small \ttfamily +% jfbu (at) free (dot) fr\\ +% Package version: \pkgversion\ (\pkgdate). +% \end{center} +% \vskip1cm +% \begin{abstract} +% The \etoc package gives the user complete control on +% how the entries of the table of contents should be +% constituted from the \emph{name}, \emph{number}, and +% \emph{page number} of each sectioning unit. This goes via +% the definition of \emph{line styles} for each sectioning +% level used in the document. The package provides its own +% custom line styles as an example, next to the standard +% formatting inherited from the \LaTeX{} document classes. But +% the idea is to give the means to the user to delegate the +% details to packages dealing with list making environments +% (such as |enumitem|). Regarding the \emph{global style}, +% \etoc typesets by default tables of contents in a +% multi-column format, with either a standard heading, or a +% ruled title, optionally with a frame around the table of +% contents. The \cs{tableofcontents} command can be used +% arbitrarily many times in the same document, and comes with +% a starred variant which gives local table of contents. +% \end{abstract} +% +% \vskip1cm +% \tableofcontents +% +% \part{Although this is a short document, we are going to use many sectioning commands} +% +% \section{Overview} +% +% Popular packages dealing with TOCs include |tocloft|, +% |titletoc| and |minitoc|. Why another one? well, I started +% \etoc for my own use, and only later found out about the above +% mentioned packages . . . I realize (to some extent, as I still +% haven't read closely the documentations) that most if not all +% of the \etoc functionality could well be already available in +% the above mentioned packages. +% +% \subsection{Initial motivation} +% +% The specific initial impetus was to transform the `flat' data +% contained in the |.toc| file into a nested structure which +% could be given to list making environments. For example, +% typesetting the line corresponding to the first sub-section in +% a given section would open a group which would be closed only +% when a section, chapter, or part line entry in the |.toc| file +% would be encountered. Package \etoc allows to do this very +% easily and the opening and closing of the groups can for +% example be |\begin{enumerate}| and |\end{enumerate}| pairs, +% will all the customizing allowed by packages such as +% |enumitem|. Although there is a limitation to this method (the +% |.toc| file may contain other commands, such as language +% changing commands, which do not expect to see their scope +% limited in this way inside a group), I believe this procedure +% will be found the most convenient in many cases. However the +% own package custom line styles (illustrated by the main table +% of contents in this document) do not make use of environments +% to avoid that problem. +% +% \subsection{Line styles} +% +% To implement the above idea, the command \csb{etocsetstyle} +% will inform \etoc of what it should do at each sectioning +% level, from |part| downto |subparagraph|. Other sectioning +% names can be used too, if present in the document. +% +% \subsubsection{\csb{etocetoclines} vs \csb{etocstandardlines}} +% +% The \csb{etocetoclines} command selects the package predefined +% line styles, and \csb{etocstandardlines} uses the standard +% default formatting from the |article|, |book|, |report|, or +% also |scrartcl| classes. For any document class proceeding (as +% does |scrartcl|) in a manner analogous as does the |article| +% class in its typesetting of the table of contents, the +% \csb{etocstandardlines} should be functional: indeed nothing +% is hard-coded into the package code; rather, when +% \csb{etocstandardlines} is issued by the user, the package +% cancels its own mechanism and gives back the leadership to the +% class layer. Note though that this means that \etoc does not +% provide utilities to change this or that length from the +% \LaTeX{} default formatting of TOC entries. But if some other +% package has done it, then this should work correctly also when +% \etoc is in use (for its other aspects described below). +% +% \subsubsection{Instructing \etoc about sectioning command names} +% +% If the document class uses other names, such as \emph{atom}, +% or \emph{particle}, then the command \csb{etocsetlevel} is +% provided to instruct \etoc about it. +% +% \subsection{Global style: multiple columns, ruled heading, framed TOC} +% +% At the global level, the default of \etoc is to typeset the +% TOC on two columns, using the package |multicol|. +% Additionally, the heading can be formatted as in the default +% manner, or as a ruled heading, or the entire TOC can be +% encapsulated in a frame (if it fits on the current page). And +% the user can specify to use a single column output, or three +% columns, etc . . . +% +% \subsection{Local table of contents} +% +% With \etoc, the \csb{tableofcontents} command can be used +% arbitrarily many times and it has a starred variant \tocstarb +% which prints a local table of contents (i.e. all subsections +% etc . . . inside a given section, or all subsubsections and +% lower inside a given subsection, etc . . . ). +% +% \part{Package commands for line styles} +% +% \etocsetstyle{section} +% {\begin{enumerate}[leftmargin=0pt,label=]} +% {\normalsize\bfseries\rmfamily\item} +% {\etocifnumbered{\makebox[1cm][c]{\color{green}\fboxrule1pt +% \fbox{\protect\normalcolor\etocnumber}}}{\hspace{1cm}}% +% \etocname (page \etocpage)} +% {\end{enumerate}} +% +% \etocsetstyle{subsection} +% {\begin{enumerate}[label=\etocnumber, leftmargin=1cm]} +% {\normalfont \item} +% {\etocname (p.~\etocpage)} +% {\end{enumerate}} +% +% \etocsetstyle{subsubsection} +% {\par\nobreak\begingroup\normalfont\footnotesize\itshape\etocskipfirstprefix} +% {\allowbreak\,--\,} +% {\etocname} +% {\unskip.\hfil\par\endgroup\pagebreak[3]} +% +% \etocruledstyle[1]{\etocfontminusone\color{green}% +% \fboxrule1pt\fboxsep1ex% +% \framebox[\linewidth] +% {\normalcolor\hfil Contents of this second part\hfil}} +% +% \tableofcontents* +% +% \section{The \csb{etocsetstyle} command} +% +% \subsection{An example} +% +% Let us explain how \etoc was used to produce the (local) table +% of contents of this second part. We distinguish between the +% \emph{line styles}, and the \emph{global style}. The global +% style here is on one column, and has a heading of a certain +% sort, but first we describe the line styles. Essentially they +% were obtained via the following set-up:^^A +% \footnote{the present document has +% {\ttfamily\string\renewcommand\string{^^A +% \string\familydefault\string}\string{\string\sfdefault\string}} +% in its preamble, hence \cs{normalfont} switches to the +% |sans| typeface; so in the section line-style, I wrote +% \cs{rmfamily} instead.} \footnote{\etoc uses the |xspace| +% package, and there is no need to write +% \cs{etocname\string{\string} text} rather than just +% \cs{etocname text} for example. However, this forced us to +% add the mysterious \cs{unskip} before the dot in the +% subsubsection style.} +% \begin{verbatim} +% \etocsetstyle{section} +% {\begin{enumerate}} +% {\normalsize\bfseries\rmfamily\item} +% {\etocname (page \etocpage)} +% {\end{enumerate}} +% +% \etocsetstyle{subsection} +% {\begin{enumerate}} +% {\normalfont\item} +% {\etocname (p.~\etocpage)} +% {\end{enumerate}} +% +% \etocsetstyle{subsubsection} +% {\par\nobreak\begingroup\normalfont\footnotesize\itshape\etocskipfirstprefix} +% {\allowbreak\,--\,} +% {\etocname} +% {\unskip.\hfil\par\endgroup\pagebreak[3]} +% \end{verbatim} +% Each \csb{etocsetstyle} command has five mandatory arguments:\\ +% \hbox to \linewidth +% {\hfil\cs{etocsetstyle}\color{blue}\marg{levelname}^^A +% \marg{start}\marg{prefix}\marg{contents}\marg{finish}\hfil} +% The initially recognized \marg{levelname}'s are the sectioning +% levels of the standard document classes (from \emph{part} +% downto \emph{subparagraph}). +% +% The \marg{start} code is executed when a toc entry of that level is +% encountered and the previous one was at a higher level. The +% \marg{finish} code is executed when one again encounters a higher +% level toc entry. In the mean-time all entries for that level are +% typeset by executing first the \marg{prefix} code and then the +% \marg{contents} code. +% +% \subsubsection{\csb{etocname} and \csb{etocpage}} +% +% The line styles specifications use the commands \csb{etocname} +% and \csb{etocpage} to get the name, respectively the page +% number for each entry. The numbering here would be the one +% generated by the |enumerate| environment, we will shortly +% explain how we got the actual numbering from the data in the +% |.toc| file. +% +% +% \subsubsection{The \csb{etocskipfirstprefix} command} +% +% The |subsubsection| code specifies to list the names of the +% subsubsections from a given subsection in an inline manner, +% with -- as a separator. The command \csb{etocskipfirstprefix}, +% which, if present, \emph{must} be the very last one in the +% \emph{start} code, instructs to not use that separator of the +% first item. With this style, one has to be imaginative to +% design something then for paragraph and subparagraph entries! +% perhaps as superscripts? Well, usually one does not need +% paragraphs and subparagraphs numbered and listed in the TOC, +% so our putative user here chose a design where no provision is +% made for them and added the definitive: +% \begin{verbatim} +% \etocsetstyle{paragraph}{}{}{}{} +% \etocsetstyle{subparagraph}{}{}{}{} +% \end{verbatim} +% This is also the situation with the default line styles from the package! +% +% \subsubsection{secnumdepth and tocdepth} +% +% Alternatively, the \LaTeX{} counters |secnumdepth| (which +% decides down to which levels things are numbered and +% automatically written to the |.toc| file) or |tocdepth| (which +% decides the finest level displayed in the table of contents) +% could be used, as they are obeyed by \etoc. +% +% +% \subsection{The \csb{etocsetlevel} command} +% +% If your document uses other sectioning names, such as, for +% example \emph{molecule}, or \emph{atom}, one informs \etoc of +% this via: +% \begin{verbatim} +% \etocsetlevel{cell}{0} +% \etocsetlevel{molecule}{1} +% \etocsetlevel{atom}{2} +% \etocsetlevel{nucleus}{3} +% \end{verbatim} +% The accepted numbers range from -1 to 5 inclusive. The package code +% does: +% \begin{verbatim} +% \etocsetlevel{part}{-1} +% \etocsetlevel{chapter}{0} +% \etocsetlevel{section}{1} +% \etocsetlevel{subsection}{2} +% \etocsetlevel{subsubsection}{3} +% \etocsetlevel{paragraph}{4} +% \etocsetlevel{subparagraph}{5} +% \end{verbatim} +% +% \subsection{Further informations and let's make this a very long title to see how it will look like} +% +% +% \subsubsection{The \csb{etocnumber} command} +% So far, our specifications would use the numbering generated +% by the |enumerate| environments, but it would be nicer to use +% the actual numbers as found in the |.toc| file. This is +% available via the \csb{etocnumber} command. To get the labels +% in the |enumerate| list to use it we can proceed with the +% syntax {\ttfamily label=\char32} from the package |enumitem|: +% \begin{verbatim} +% \etocsetstyle{section} +% {\begin{enumerate}[label=\etocnumber]} +% {\normalsize\bfseries\rmfamily\item} +% {\etocname (page \etocpage)} +% {\end{enumerate}} +% \end{verbatim} +% Rather than just\cs{etocnumber} we then used something like +% |\fbox{\etocnumber}|. +% +% +% \subsubsection{The \csb{etocifnumbered} switch} +% +% The \cs{fbox} would give an unaesthetic result in the case of an unnumbered +% section (which ended up in the table of contents via an \cs{addcontentsline} +% command). The \cs{etocifnumbered}\marg{A}\marg{B} command executes \meta{A} if +% the number exists, and \meta{B} if not. So our final code could be: +% \begin{verbatim} +% \etocsetstyle{section} +% {\begin{enumerate}[label=\etocifnumbered{\etocnumber}{}]} +% {\normalsize\bfseries\rmfamily\item} +% {\etocname (page \etocpage)} +% {\end{enumerate}} +% \end{verbatim} +% \vskip-.5cm +% We used, actually: +% \begin{verbatim} +% \etocsetstyle{section} +% {\begin{enumerate}[leftmargin=0pt,label=]} +% {\normalsize\bfseries\rmfamily\item} +% {\etocifnumbered{\makebox[1cm][c]{\color{green}\fboxrule1pt +% \fbox{\protect\normalcolor\etocnumber}}{\hspace{1cm}}% +% \etocname (page \etocpage)} +% {\end{enumerate}} +% +% \etocsetstyle{subsection} +% {\begin{enumerate}[label=\etocnumber, leftmargin=1cm]} +% {\normalfont \item} +% {\etocname (p.~\etocpage)} +% {\end{enumerate}} +% \end{verbatim} +% +% If we had changed only the |section| level, and not the +% |subsection| level, an error on compilation would have occurred +% because the package style for subsections expects to start `in +% vertical mode'. An additional \cs{par} token in the +% \meta{contents} part of the |section| level would have fixed +% this: |{...(page \etocpage)\par}|. +% +% +% \color{red} +% \addtocontents{toc}{\string\color{red}} +% +% \subsubsection{This is a red subsubsection for illustrative purposes} +% +% Just before this subsubsection we inserted in the |.tex| file: +% \begin{verbatim} +% \color{red} +% \addtocontents{toc}{\string\color{red}} +% \end{verbatim} +% This entire subsubsection and its title is printed in red, as +% well as the title of the next section (we cancel the color +% change only after it). But what about its entry in the table +% of contents? well it is red in the main table of contents at +% the beginning of this document, which uses the package line +% styles, and it is not red in the table of contents at the +% beginning of this second document part. The reason is that the +% \meta{finish} code for the subsubsection level closed a group, +% whereas the \meta{start} and \meta{finish} code of the package +% line styles do not contain group opening and closing +% instructions. So here the group was closed while reading the +% |.toc| file and this explains why the next entry in the local +% TOC was not typeset in red. +% +% In the present case the group at the subsubsection level is +% there to confine the font changes, but this could be made +% superfluous via adding a \cs{normalsize} to the +% |subsection| specification. I take this opportunity to mention +% that \etoc always typesets the entire table of contents inside +% a group, hence no font change therein can propagate to the outside. +% +% +% \section{Am I also in red?} +% +% \begin{verbatim} +% \normalcolor +% \addtocontents{toc}{\string\normalcolor} +% \end{verbatim} +% +% \normalcolor +% \addtocontents{toc}{\string\normalcolor} +% +% Back to black. Note that this scope problem arises in real +% life in a multi-lingual document, as the |babel| package +% writes to the |.toc| file the language changes occurring in +% the document. There is no easy general solution\footnote{one +% can insert by hand the language changes in each concerned +% sectioning command.} to this problem, which probably will +% concern only a minority of cases. Again, the line styles +% defined by \etoc do not use groups. +% +% \section*{An unnumbered section} +% \addcontentsline{toc}{section}{An unnumbered section} +% +% I don't have much to say here. I just added an unnumbered +% section, and made it appear in the |.toc| file. +% +% \begin{verbatim} +% \section*{An unnumbered section} +% \addcontentsline{toc}{section}{An unnumbered section} +% \end{verbatim} +% +% \part{Package commands for global styles} +% +% We compare here various line styles: the standard formatting +% provided by the document class, the package line styles, and +% the custom line styles we defined above which use enumerate +% environments. We added some paragraphs, which are not taken +% into account by the \etoc style, nor by our enumerate styles. +% +% \begin{verbatim} +% \setcounter{secnumdepth}{4} +% \setcounter{tocdepth}{4} +% \end{verbatim} +% +% \setcounter{secnumdepth}{4} +% \setcounter{tocdepth}{4} +% +% \etocruledstyle[2]{\normalfont\normalsize\rmfamily\itshape +% \fbox{\parbox{.8\linewidth}{This is the +% table of contents defined with enumerate environments for the part, +% section and subsection levels, and an inline italic style for +% subsubsections.}}} +% +% First let us use again our set-up from the previous part. We add to it +% \begin{verbatim} +% \etocsetstyle{part} +% {\begin{enumerate}[label=\etocnumber,leftmargin=1em]} +% {\etocfontminusone\item} +% {\etocname} +% {\end{enumerate}} +% \end{verbatim} +% +% \etocsetstyle{part} +% {\begin{enumerate}[label=\etocnumber,leftmargin=1em]} +% {\etocfontminusone\item} +% {\etocname} +% {\end{enumerate}} +% +% \tableofcontents +% +% Then we switch to the standard formatting of entries, as +% provided by the document class, but here on two columns: +% \begin{verbatim} +% \etocstandardlines +% \tableofcontents +% \end{verbatim} +% (let's clear the present page) \clearpage +% \etocstandardlines +% \etocruledstyle[2]{\renewcommand{\etoctoprule}{\hrule height0pt}^^A +% \normalfont\normalsize\rmfamily\itshape +% \parbox{.8\linewidth}{\centering +% This is the table of contents with standard +% entries (on 2 columns!)}} +% +% \tableofcontents +% +% Finally we use the package line styles, but restrict the table +% of contents to this third part, and as it is short we opted +% for a frame around it. +% \begin{verbatim} +% \etocetoclines +% \tableofcontents* +% \end{verbatim} +% How the frame and title were set up will be described later. Also, +% we reduced the package default left and right inner margins from 2em to 2ex. +% +% \etocframedstyle{\normalfont\normalsize\rmfamily\itshape +% \fbox{\parbox{.8\linewidth}{\centering This is the table of +% contents \`a la \etoc, but just for this part. As it is +% put in a frame, it has to be small enough to fit on one +% page.}}} \etocetoclines +% +% \begingroup \renewcommand{\etocinnerleftsep}{2ex} +% \renewcommand{\etocinnerrightsep}{2ex} +% \tableofcontents* +% \endgroup +% +% \section{Specifying the global style} +% +% The \emph{global} style says whether the TOC appears with +% multiple columns or just one, whether the title is typeset as +% in the |article| or |book| class, or should be centered above +% the entries, with rules on its sides, or if the entire TOC +% should be put in a frame. For example, to opt for a ruled +% heading and single column layout, one issues commands of the +% following type: +% \begin{verbatim} +% \etocruledstyle[1]{\etocfontminusone This is the table of contents} +% \tableofcontents or \tableofcontents* +% \end{verbatim} +% +% \subsection{The \csb{etocfontxxx...} commands} +% +% The \cs{etocfontminusone} gives the font specification for the +% top (i.e. part) level. The package predefines: +% \begin{verbatim} +% \newcommand\etocfontminusone{\normalfont \large \bfseries} +% \newcommand\etocfontzero{\normalfont \normalsize \bfseries} +% \newcommand\etocfontone{\normalfont \normalsize \bfseries} +% \newcommand\etocfonttwo{\normalfont \normalsize} +% \newcommand\etocfontthree{\normalfont \footnotesize} +% \newcommand\etocfontfour{\normalfont \footnotesize} +% \newcommand\etocfontfive{\normalfont \footnotesize} +% \end{verbatim} +% This has no impact under the \cs{etocstandardlines} regime. +% And, let us recall, levels four (paragraph) and five +% (subparagraphs) are not displayed in TOCs by the package +% default line styles. +% +% +% \subsection{The command \csb{etocruledstyle}} +% +% The general format of \cs{etocruledstyle} is:\\ +% \centerline{\color{blue}\cs{etocruledstyle}^^A +% \oarg{number of columns}\marg{title of the toc}} +% \noindent Note that the title is horizontal material, if it does not fit on one +% line it can be put in a \cs{parbox} of a given width. We did this and even +% enclosed the parboxes in \cs{fbox}es to get frames around them. For the example +% with the standard formatting we did not use an \cs{fbox} and got rid of the +% horizontal rules via: +% \begin{verbatim} +% \renewcommand{\etoctoprule}{\hrule height 0pt} +% \end{verbatim} +% The green frame for the table of contents heading at the start of the second +% part of this document was obtained with +% \begin{verbatim} +% \etocruledstyle[1]{\etocfontminusone\color{green}% +% \fboxrule1pt\fboxsep1ex% +% \framebox[\linewidth] +% {\normalcolor\hfil Contents of this second part\hfil}} +% \end{verbatim} +% +% +% \subsection{The command \csb{etocmulticolstyle}} +% +% This is also a command with one optional and one mandatory argument:\\ +% \centerline{\color{blue}\cs{etocmulticolstyle}\oarg{number\_of\_columns}\marg{heading}} +% The \oarg{number\_of\_columns} can go from 1 to 10 (it defaults to 2, and from 2 +% on is passed to a |multicols| environment). The \marg{heading} can be something like: +% \begin{center} +% {\ttfamily\string\chapter\star}\marg{title},\\ +% or\\ +% \cs{etocstandardheading}\marg{title},\\ +% or\\ +% \cs{etocstandardheadingnomarks}\marg{title}. +% \end{center} +% These last two commands do either \starit{section} or +% \starit{chapter} depending on the document class, and the +% first one puts the marks for the page headings. To emulate the +% standard formatting one can thus use:\\ +% \centerline{\ttfamily\string\etocmulticolstyle[1]\string{^^A +% \string\etocstandardheading\string{\string\contentsname\string}\string}} +% After such a command, future \cs{tableofcontents} will use the +% specified style. A shortcut for just one table of contents and +% not affecting the styles of later TOCs is:\\ +% \centerline{\cs{etocmulticol}\oarg{number\_of\_columns}\marg{heading}} +% And the starred form will be +% \starit{etocmulticol}\oarg{number\_of\_columns}\marg{heading}. +% +% \subsubsection{A point of some importance} +% +% There is an important difference between the +% \cs{etocmulticolstyle} and \cs{etocruledstyle} commands. The +% mandatory argument of the former can not be just some +% \emph{naked text}. It should rather be something like +% |\hbox{naked text}| or |\vbox{naked text}|. +% ^^A +% More conveniently, one can use things such as:\\ +% \hbox to \linewidth{\hss |\section*{some not so naked text}|\hss} +% Else, you will get an error:\\ +% \hbox to \linewidth{\hss |ERROR: LaTeX Error: Something's wrong--perhaps a missing \item.|\hss} +% In the special case where the command was +% also given the optional argument |[1]|, +% it is possible to feed it with `|naked text\par|'. +% % +% +% On the other hand, it is exactly the opposite for \cs{etocruledstyle} which +% expects things which fit inside a horizontal box, hence it will gladly accepts a +% \emph{naked text} as argument. +% +% +% \paragraph{Do we really want paragraph entries in the TOC?} +% +% \paragraph{really?} +% +% \subsection{The command \csb{etocruledstyle} (cont.)} +% +% +% As a shortcut to set the style with this command and then make a +% \cs{tableofcontents} or \tocstar call (in a group, so that the +% style for future table of contents is not affected) we have: \\ +% \centerline{\csb{etocruled}\oarg{number\_of\_columns}\marg{title}} +% And the starred form will be with \staritb{etocruled}. +% +% \subsection{The command \csb{etocframedstyle}} +% +% Same mechanism:\\ +% \centerline{\color{blue}\cs{etocframedstyle}\oarg{number\_of\_columns}\marg{title}} +% and the accompanying shortcut:\\ +% \centerline{\csb{etocframed}\oarg{number\_of\_columns}\marg{title}} +% Here the entire table of contents is framed, hence this can only work if it fits +% on a page. Again the starred variant starts with \staritb{etocframed}. +% +% \subsection{The command \csb{etocsettocstyle}} +% +% This is a command with two mandatory arguments:\\ +% \centerline{\color{blue}\cs{etocsettocstyle}\marg{before\_toc}\marg{after\_toc}} +% The \marg{before\_toc} part is responsible for typesetting the +% heading, for example it can be something like +% \starit{section}|{\contentsname}|. It can also contain +% instructions to mark the page headings.\footnote{\etoc +% provides the command \cs{etocmarkboth}\oarg{optional\_name}, with an +% optional argument which defaults to \cs{contentsname}.} Or +% it could check (book class) to see if two-column mode is on, +% and switch to one-column style, and the \meta{after\_toc} part +% would then reenact the two-column mode.\footnote{In our +% testing, we had some difficulties, when using the |multicol| +% package in a book class document with the two-column global +% option. So, as we use |multicol| by default we decided +% against trying to automatize a check for such a possible +% |twocolumn| class option. It is up to the user to decide (or +% not) to switch back and forth from two-column to one-column +% when typesettings table of contents.} +% +% The three commands \cs{etocmulticolstyle}, \cs{etocruledstyle}, and +% \cs{etocframedstyle} actually call \cs{etocsettocstyle} as a +% lower-level routine. +% \clearpage +% \section{Summary of the main local and global style +% commands} +% +% {\color{green}\fboxrule1pt\fboxsep1em +% \setbox0\hbox{\cs{etocname}, \cs{etocnumber}, \cs{etocpage}, +% \cs{etocifnumbered}\marg{A}\marg{B}}^^A +% \framebox[\linewidth][c]{^^A +% \vbox{\hsize\wd0\normalcolor\noindent +% \cs{etocsetstyle}\marg{levelname}^^A +% \marg{start}\marg{prefix}\marg{contents}\marg{finish}\\ +% \cs{etocname}, \cs{etocnumber}, \cs{etocpage}, +% \cs{etocifnumbered}\marg{A}\marg{B}\\ +% \cs{etocmulticolstyle}\oarg{number\_of\_columns}\marg{heading}\\ +% \cs{etocruledstyle}\oarg{number\_of\_columns}\marg{title}\\ +% \cs{etocframedstyle}\oarg{number\_of\_columns}\marg{title}\\ +% \cs{etocsettocstyle}\marg{before\_toc}\marg{after\_toc}\\ +% \cs{tableofcontents}\\ +% \tocstar\\ +% \cs{etocmulticol}\oarg{number\_of\_columns}\marg{heading}\\ +% \cs{etocmulticol}\star\oarg{number\_of\_columns}\marg{heading}\\ +% \cs{etocruled}\oarg{number\_of\_columns}\marg{title}\\ +% \cs{etocruled}\star\oarg{number\_of\_columns}\marg{title}\\ +% \cs{etocframed}\oarg{number\_of\_columns}\marg{title}\\ +% \cs{etocframed}\star\oarg{number\_of\_columns}\marg{title}}}} +% +% +% +% \part{Customizing \etoc} +% +% \section{Customizing the \etoc line styles} +% +% We will simply list the relevant commands as defined in the package. Customizing +% them goes through suitable \cs{renewcommand}s: +% +% \begin{verbatim} +% \newcommand\etocfontminusone{\normalfont \large \bfseries} +% \newcommand\etocfontzero{\normalfont \normalsize \bfseries} +% \newcommand\etocfontone{\normalfont \normalsize \bfseries} +% \newcommand\etocfonttwo{\normalfont \normalsize} +% \newcommand\etocfontthree{\normalfont \footnotesize} +% \newcommand\etocfontfour{\normalfont \footnotesize} +% \newcommand\etocfontfive{\normalfont \footnotesize} +% +% \newcommand\etocsepminusone{4ex plus .5ex minus .5ex} +% \newcommand\etocsepzero{2.5ex plus .4ex minus .4ex} +% \newcommand\etocsepone{1.5ex plus .3ex minus .3ex} +% \newcommand\etocseptwo{1ex plus .15ex minus .15ex} +% \newcommand\etocsepthree{.25ex plus .05ex minus .05ex} +% \newcommand\etocminusonelrmargins{1em} +% +% \newcommand\etocbaselinespreadminusone{1} +% \newcommand\etocbaselinespreadzero{1} +% \newcommand\etocbaselinespreadone{1} +% \newcommand\etocbaselinespreadtwo{1} +% \newcommand\etocbaselinespreadthree{.9} +% +% \newcommand\etoctoclineleaders +% {\hbox{\normalfont\normalsize\hbox to 2ex {\hfil.\hfil}}} +% +% \newcommand\etocabbrevpagename{p.~} +% \end{verbatim} +% +% No customizing of the standard line styles is possible from +% within \etoc. As already explained, when +% \cs{etocstandardlines} has been issued, the package just makes +% itself very discrete and acts only at the global level, and +% the TOC entries are (hopefully) formatted as would have +% happened in the absence of \etoc. In this mode the +% \cs{etocsetstyle} commands will have an effect only after the +% document encounters again an \cs{etocetoclines} command. +% +% The \cs{etocstandardlines} mechanism will work also with +% sectioning commands made known to \etoc via \cs{etocsetlevel}, +% under the condition of course that these sectioning commands +% are accompanied with all the relevant definitions for +% typesetting toc entries in the \LaTeX{} default manner +% (existence of the macros \cs{l@something} . . .). +% +% \section{Customizing the global styles} +% +% Again we list the relevant macros, what they do should be legible from their +% names: +% \begin{verbatim} +% \newcommand\etocabovetocskip{3.5ex plus 1ex minus .2ex} +% \newcommand\etocbelowtocskip{3.5ex plus 1ex minus .2ex} +% +% \newcommand\etoccolumnsep{2em} +% \newcommand\etocmulticolsep{0ex} +% \newcommand\etocmulticolpretolerance{-1} +% \newcommand\etocmulticoltolerance{200} +% +% \newcommand\etocinnertopsep{2ex} +% \newcommand\etocinnerbottomsep{3.5ex} +% \newcommand\etocinnerleftsep{2em} +% \newcommand\etocinnerrightsep{2em} +% +% \newcommand\etoctoprule{\hrule} +% \newcommand\etocleftrule{\vrule} +% \newcommand\etocrightrule{\vrule} +% \newcommand\etocbottomrule{\hrule} +% +% \newcommand\etoctoprulecolorcmd{\relax} +% \newcommand\etocbottomrulecolorcmd{\relax} +% \newcommand\etocleftrulecolorcmd{\relax} +% \newcommand\etocrightrulecolorcmd{\relax} +% \end{verbatim} +% +% Regarding the dimensions of the top rule they can be specified +% in |ex|'s or |em|'s as for example:\\ +% \hbox to \linewidth{\hss |\renewcommand{\etoctoprule}{\hrule height 1ex}|\hss} +% The package code is done in such a way that it is the font +% size in instance at the end of typesetting the title argument +% to \cs{etocruledtoc} or \cs{etocframedtoc} which will be used +% for the meaning of the `1ex'. However for the side rules and +% bottom rule in the framed case, their dimensions, if specified +% with such font relative units, are decided on the basis of the +% font in effect just before the table of contents. +% +% The top, bottom, left, right rules do not have to be rules: they can be +% \emph{leaders} in the general \TeX{} sense. +% +% \subsection{Hacking framed parboxes} +% +% \begin{verbatim} +% \renewcommand\etoctoprule{\hrule height 2pt depth 2pt} +% \etocruled*[3]{\color{green}\fboxrule2pt\fboxsep1ex% +% \fbox{\raisebox{-\fontdimen22\textfont2} +% {\color{blue}\parbox{.5\linewidth} +% {\normalfont This text is perfectly centered +% vertically with respect to the +% surrounding horizontal rules, but as +% there are no subsubsections here, it +% sits above an empty (3-column) local toc.}}}} +% \end{verbatim} +% +% \renewcommand\etoctoprule{\hrule height 2pt depth 2pt} +% \etocruled*[3]{\color{green}\fboxrule2pt\fboxsep1ex^^A +% \fbox{\raisebox{-\fontdimen22\textfont2} +% {\color{blue}\parbox{.5\linewidth} +% {\normalfont This text is perfectly centered +% vertically with respect to the +% surrounding horizontal rules, but as +% there are no subsubsections here, it +% sits above an empty (3-column) +% local toc.}}}} +% +% \subsection{Interverting the levels} +% +% Let us display and count all subsections occurring in this document. +% \begin{verbatim} +% \setcounter{tocdepth}{2} +% \etocsetlevel{part}{3} +% \etocsetlevel{section}{3} +% \etocsetstyle{subsection}{\begin{enumerate}[itemsep=0pt,% +% label=,leftmargin=0pt]} +% {\normalfont\bfseries\item} +% {\roman{enumi}. \normalfont\etocname (\etocnumber, p.~\etocpage)} +% {\end{enumerate}} +% \renewcommand{\etoccolumnsep}{2.75em} +% \renewcommand{\columnseprule}{1pt} +% \etocmulticol[3]{\subsection{All subsections of this document}} +% \end{verbatim} +% +% \setcounter{tocdepth}{2} +% \etocsetlevel{part}{3} +% \etocsetlevel{section}{3} +% \etocsetstyle{subsection}{\begin{enumerate}[itemsep=0pt,^^A +% label=,leftmargin=0pt]} +% {\normalfont\bfseries\item} +% {\roman{enumi}. \normalfont\etocname (\etocnumber, p.~\etocpage)} +% {\end{enumerate}} +% \renewcommand{\etoccolumnsep}{2.75em} +% \renewcommand{\columnseprule}{1pt} +% \etocmulticol[3]{\subsection{All subsections of this document}} +% +% +% \subsection{Compatibility with other packages} +% +% \etoc uses the packages |multicol| and |xspace|. It is +% |hyperref| aware and hopefully |hyperref| compatible! The +% macros \cs{etocname}, \cs{etocnumber}, and \cs{etocpage} +% contain the |hyperref| links, if present (note that the +% |linktoc=all| option of |hyperref| tells it to put a link also +% in the page number corresponding to a given toc entry). The +% table of contents of the present document are fully linked. +% +% \etoc has not been tested with other packages than those +% cited. It has been tested to work as expected with the +% |article|, |book| and |scrartcl| document classes. +% +% +% \subsection{\TeX nical matters} +% +% The \cs{etocname}, \cs{etocnumber}, \cs{etocpage} and +% \cs{etocifnumbered} macros are protected against premature +% expansion. The macro \cs{etocsetstyle}, as well as \cs{etocsetlevel} +% and the global style commands \cs{etocmulticolstyle}, +% \cs{etocruledstyle} and \cs{etocframedstyle} obey \LaTeX{}'s groups. +% +% \part{The code} +% +% \section{Implementation} +% +% Source code commenting is hopefully for a future release. Sorry. +% \StopEventually{} +% \begin{macrocode} +%<*package> +\NeedsTeXFormat{LaTeX2e} +% +\RequirePackage{multicol} +\RequirePackage{xspace} +\DeclareOption*{\PackageWarning{etoc}{Option `\CurrentOption' is unknown.}} +\ProcessOptions\relax +% +\newtoks\Etoc@toctoks +\newif\ifEtoc@j % part +\newif\ifEtoc@ % chapter +\newif\ifEtoc@i % section +\newif\ifEtoc@ii % subsection +\newif\ifEtoc@iii % subsubsection +\newif\ifEtoc@iv % paragraph +\newif\ifEtoc@v % subparagraph +\newif\ifEtoc@number +\newif\ifEtoc@hyperref +\newif\ifEtoc@star +\newif\ifEtoc@standard +\newif\ifEtoc@part +% +\newif\ifEtoc@localtoc +\newif\ifEtoc@skipthisone +\newif\ifEtoc@stoptoc +\newif\ifEtoc@notactive +\newcounter{etoc@localtocid} +% +\let\Etoc@@minusone@@\m@ne +\chardef\Etoc@@zero@@\z@ +\chardef\Etoc@@one@@\@ne +\chardef\Etoc@@two@@\tw@ +\chardef\Etoc@@three@@\thr@@ +\chardef\Etoc@@four@@4\relax +\chardef\Etoc@@five@@5\relax +\chardef\Etoc@@six@@6\relax +\let\Etoc@localtop\m@ne +\def\Etoc@@minusone@{minusone} +\def\Etoc@@zero@{zero} +\def\Etoc@@one@{one} +\def\Etoc@@two@{two} +\def\Etoc@@three@{three} +\def\Etoc@@four@{four} +\def\Etoc@@five@{five} +% +\def\Etoc@Lazarus{% +\def\Etoc@Lazarus@elta##1\Etoc@Lazarus@eltb##2{\let##1##2}% +\Etoc@Lazaruslist} +\def\Etoc@Lazaruslist{} +% +\def\Etoc@newdisciple#1#2{% + \def\Etoc@Lazarus@elta{\noexpand\Etoc@Lazarus@elta\noexpand}% + \def\Etoc@Lazarus@eltb{\noexpand\Etoc@Lazarus@eltb\noexpand}% + \edef\Etoc@Lazaruslist{\Etoc@Lazaruslist + \Etoc@Lazarus@elta#1 + \Etoc@Lazarus@eltb#2}} +\def\etocsetlevel#1#2{% + \let\Etoc@next\@firstofone + \ifcase#2\or\or\or\or\or\else\ifnum#2=\m@ne\else + \PackageWarning{etoc} + {unexpected value `#2' in \string\etocsetlevel.^^J% + Should be -1, 0, 1, 2, 3, 4 or 5. Set to -1}% + \expandafter\def\csname Etoc@#1@\endcsname{minusone}% + \expandafter\let\csname Etoc@#1@@\endcsname\m@ne + \let\Etoc@next\@gobble\fi\fi + \if@noskipsec + \else + \expandafter\expandafter\expandafter + \let\expandafter\expandafter\csname Etoc@savedl@#1\endcsname + \csname l@#1\endcsname + \expandafter\let \csname l@#1\endcsname\Etoc@lxyz + \fi + \expandafter\expandafter\expandafter\Etoc@newdisciple + \expandafter\expandafter + \csname l@#1\endcsname\csname Etoc@savedl@#1\endcsname + \Etoc@next + {\ifcase#2\relax + \expandafter\let \csname Etoc@#1@@\endcsname\Etoc@@zero@@ + \expandafter\def \csname Etoc@#1@\endcsname{zero}% + \or + \expandafter\let \csname Etoc@#1@@\endcsname\Etoc@@one@@ + \expandafter\def \csname Etoc@#1@\endcsname{one}% + \or + \expandafter\let \csname Etoc@#1@@\endcsname\Etoc@@two@@ + \expandafter\def \csname Etoc@#1@\endcsname{two}% + \or + \expandafter\let \csname Etoc@#1@@\endcsname\Etoc@@three@@ + \expandafter\def \csname Etoc@#1@\endcsname{three}% + \or + \expandafter\let \csname Etoc@#1@@\endcsname\Etoc@@four@@ + \expandafter\def \csname Etoc@#1@\endcsname{four}% + \or + \expandafter\let \csname Etoc@#1@@\endcsname\Etoc@@five@@ + \expandafter\def \csname Etoc@#1@\endcsname{five}% + \else + \expandafter\let \csname Etoc@#1@@\endcsname\Etoc@@minusone@@ + \expandafter\def \csname Etoc@#1@\endcsname{minusone}% + \fi}} +\etocsetlevel{part}{-1} +\etocsetlevel{chapter}{0} +\etocsetlevel{section}{1} +\etocsetlevel{subsection}{2} +\etocsetlevel{subsubsection}{3} +\etocsetlevel{paragraph}{4} +\etocsetlevel{subparagraph}{5} +% +\AtBeginDocument{% +\def\Etoc@Lazarus@elta#1\Etoc@Lazarus@eltb#2{\let#2#1\let#1\Etoc@lxyz}% +\Etoc@Lazaruslist +\let\Etoc@savedcontentsline\contentsline +\let\contentsline\Etoc@etoccontentsline +\@ifpackageloaded{hyperref} +{\Etoc@hyperreftrue +\def\Etoc@et@hop#1#2#3#4#5{#1{#3}{#4}{#5}#2}} +{\Etoc@hyperreffalse +\def\Etoc@et@hop#1#2#3#4{#1{#3}{#4}#2}}} +% + \def\Etoc@swa#1{% + \Etoc@et@hop + {\Etoc@savedcontentsline{#1}} + {\Etoc@prefix\Etoc@contents}} + \def\Etoc@swb#1{% + \Etoc@et@hop + {\Etoc@savedcontentsline{#1}} + {\Etoc@contents}} + \let\etocskipfirstprefix\@thirdofthree +% +\def\etoc@startlocaltoc#1{% +\let\Etoc@next\relax + \ifEtoc@localtoc + \ifEtoc@notactive + \ifnum #1<\c@etoc@localtocid\relax + \else + \ifEtoc@j \global\let\Etoc@localtop\Etoc@@zero@@ \fi + \ifEtoc@ \global\let\Etoc@localtop\Etoc@@one@@ \fi + \ifEtoc@i \global\let\Etoc@localtop\Etoc@@two@@ \fi + \ifEtoc@ii \global\let\Etoc@localtop\Etoc@@three@@ \fi + \ifEtoc@iii \global\let\Etoc@localtop\Etoc@@four@@ \fi + \ifEtoc@iv \global\let\Etoc@localtop\Etoc@@five@@ \fi + \ifEtoc@v \global\let\Etoc@localtop\Etoc@@six@@ \fi + \def\Etoc@next{\global\Etoc@notactivefalse + \global\Etoc@vfalse + \global\Etoc@ivfalse + \global\Etoc@iiifalse + \global\Etoc@iifalse + \global\Etoc@ifalse + \global\Etoc@false + \global\Etoc@jfalse}% + \fi + \fi\fi +\Etoc@next} +\def\Etoc@setflags #1{% + \ifcase #1\relax + \global\Etoc@vfalse + \global\Etoc@ivfalse + \global\Etoc@iiifalse + \global\Etoc@iifalse + \global\Etoc@ifalse + \global\Etoc@true + \or + \global\Etoc@vfalse + \global\Etoc@ivfalse + \global\Etoc@iiifalse + \global\Etoc@iifalse + \global\Etoc@itrue + \or + \global\Etoc@vfalse + \global\Etoc@ivfalse + \global\Etoc@iiifalse + \global\Etoc@iitrue + \or + \global\Etoc@vfalse + \global\Etoc@ivfalse + \global\Etoc@iiitrue + \or + \global\Etoc@vfalse + \global\Etoc@ivtrue + \or + \global\Etoc@vtrue + \else + \global\Etoc@vfalse + \global\Etoc@ivfalse + \global\Etoc@iiifalse + \global\Etoc@iifalse + \global\Etoc@ifalse + \global\Etoc@false + \global\Etoc@jtrue + \fi} +\def\Etoc@etoccontentsline#1{% + \global\expandafter\let\expandafter\Etoc@tmp\csname Etoc@#1@@\endcsname + \global\Etoc@partfalse + \Etoc@skipthisonefalse + \ifEtoc@hyperref + \def\Etoc@next{\expandafter\@gobbletwo\@gobblefour}% + \else + \def\Etoc@next{\expandafter\@gobble\@gobblefour}% + \fi + \ifEtoc@localtoc + \let\Etoc@prenext\relax + \ifEtoc@stoptoc + \Etoc@skipthisonetrue + \fi + \ifnum\Etoc@tmp<\Etoc@localtop + \def\Etoc@prenext{\global\Etoc@stoptoctrue}% + \Etoc@skipthisonetrue + \fi + \ifEtoc@notactive + \def\Etoc@prenext{\Etoc@setflags{\Etoc@tmp}}% + \Etoc@skipthisonetrue + \fi + \Etoc@prenext + \fi + \ifnum\c@tocdepth<\Etoc@tmp\relax\else + \ifEtoc@skipthisone\else + \global\let\Etoc@next\relax + \ifcase\Etoc@tmp + \ifEtoc@v \Etoc@end@five\fi + \ifEtoc@iv \Etoc@end@four\fi + \ifEtoc@iii \Etoc@end@three\fi + \ifEtoc@ii \Etoc@end@two\fi + \ifEtoc@i \Etoc@end@one\fi + \ifEtoc@ \else \def\Etoc@next{\Etoc@begin@zero}\fi + \gdef\Etoc@contents{\Etoc@contents@zero}% + \gdef\Etoc@prefix{\Etoc@prefix@zero}% + \or + \ifEtoc@v \Etoc@end@five\fi + \ifEtoc@iv \Etoc@end@four\fi + \ifEtoc@iii \Etoc@end@three\fi + \ifEtoc@ii \Etoc@end@two\fi + \ifEtoc@i \else \def\Etoc@next{\Etoc@begin@one}\fi + \gdef\Etoc@contents{\Etoc@contents@one}% + \gdef\Etoc@prefix{\Etoc@prefix@one}% + \or + \ifEtoc@v \Etoc@end@five\fi + \ifEtoc@iv \Etoc@end@four\fi + \ifEtoc@iii \Etoc@end@three\fi + \ifEtoc@ii \else \def\Etoc@next{\Etoc@begin@two}\fi + \gdef\Etoc@contents{\Etoc@contents@two}% + \gdef\Etoc@prefix{\Etoc@prefix@two}% + \or + \ifEtoc@v \Etoc@end@five\fi + \ifEtoc@iv \Etoc@end@four\fi + \ifEtoc@iii \else \def\Etoc@next{\Etoc@begin@three}\fi + \gdef\Etoc@contents{\Etoc@contents@three}% + \gdef\Etoc@prefix{\Etoc@prefix@three}% + \or + \ifEtoc@v \Etoc@end@five\fi + \ifEtoc@iv \else \def\Etoc@next{\Etoc@begin@four}\fi + \gdef\Etoc@contents{\Etoc@contents@four}% + \gdef\Etoc@prefix{\Etoc@prefix@four}% + \or + \ifEtoc@v \else \def\Etoc@next{\Etoc@begin@five}\fi + \gdef\Etoc@contents{\Etoc@contents@five}% + \gdef\Etoc@prefix{\Etoc@prefix@five}% + \else + \ifEtoc@v \Etoc@end@five\fi + \ifEtoc@iv \Etoc@end@four\fi + \ifEtoc@iii \Etoc@end@three\fi + \ifEtoc@ii \Etoc@end@two\fi + \ifEtoc@i \Etoc@end@one\fi + \ifEtoc@ \Etoc@end@zero\fi + \ifEtoc@j \else \def\Etoc@next{\Etoc@begin@minusone}\fi + \global\Etoc@parttrue + \gdef\Etoc@contents{\Etoc@contents@minusone}% + \gdef\Etoc@prefix{\Etoc@prefix@minusone}% + \fi + \Etoc@setflags{\Etoc@tmp}% + \fi\fi + \Etoc@next + \@firstoftwo{\Etoc@swa{#1}}{\Etoc@swb{#1}}} +% +\def\Etoc@lxyz #1#2{\global\@namedef{etocname }{\leavevmode #1\xspace}% + \global\@namedef{etocpage }{\leavevmode #2\xspace}% + \Etoc@getnb #1\relax\relax\etoc@ + \ifEtoc@number\else\ifEtoc@part + \Etoc@getit #1\hspace\relax\etoc@\fi\fi} +% +\def\Etoc@getnb #1{\let\Etoc@next\Etoc@getnb@nohyp +\ifEtoc@hyperref\ifx #1\hyper@linkstart + \let\Etoc@next\Etoc@getnb@hyp\fi\fi\Etoc@next #1} +\def\Etoc@getit #1{\let\Etoc@next\Etoc@getit@nohyp +\ifEtoc@hyperref\ifx #1\hyper@linkstart + \let\Etoc@next\Etoc@getit@hyp\fi\fi\Etoc@next #1} +% +\def\Etoc@getnb@nohyp #1#2#3\etoc@{% +\ifx #1\numberline +\global\@namedef{etocnumber }{\leavevmode #2\xspace}\global\Etoc@numbertrue +\else +\global\@namedef{etocnumber }{\leavevmode\xspace}\global\Etoc@numberfalse +\fi} +% +\def\Etoc@getnb@hyp #1#2#3#4#5#6\etoc@{% + \def\Etoc@getnbr ##1##2##3\etoc@{% + \ifx ##1\numberline + \global\@namedef{etocnumber }{\leavevmode #1{#2}{#3}{##2}#5\xspace}% + \global\Etoc@numbertrue + \else + \global\@namedef{etocnumber }{\leavevmode\xspace}% + \global\Etoc@numberfalse + \fi}% + \Etoc@getnbr #4\relax\relax\etoc@} +% +\def\Etoc@getit@nohyp #1\hspace#2#3\etoc@{% + \def\Etoc@getname ##1\hspace\relax\etoc@{% + \global\@namedef{etocname }{\leavevmode ##1\xspace}}% + \ifx \relax#2\else + \global\@namedef{etocnumber }{\leavevmode #1\xspace}% + \global\Etoc@numbertrue + \Etoc@getname #3\etoc@\fi} +% +\def\Etoc@getit@hyp #1#2#3#4#5#6\etoc@{% + \def\Etoc@getname ##1\hspace\relax\etoc@{% + \global\@namedef{etocname }{\leavevmode #1{#2}{#3}{##1}#5}\xspace}% + \def\Etoc@getnbr ##1\hspace##2##3\etoc@{% + \ifx\relax##2\else + \global\@namedef{etocnumber }{\leavevmode #1{#2}{#3}{##1}#5\xspace}% + \global\Etoc@numbertrue + \Etoc@getname ##3\etoc@\fi}% + \Etoc@getnbr #4\hspace\relax\etoc@} +% +\edef\etocpage{\noexpand\protect\expandafter\noexpand + \csname etocpage \endcsname} +\edef\etocname{\noexpand\protect\expandafter\noexpand + \csname etocname \endcsname} +\edef\etocnumber{\noexpand\protect\expandafter\noexpand + \csname etocnumber \endcsname} +% +\@namedef{etocifnumbered }{\ifEtoc@number +\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi} +% +\edef\etocifnumbered{\noexpand\protect\expandafter\noexpand + \csname etocifnumbered \endcsname} +% +\def\Etoc@readtoc#1{% + \ifeof #1 + \let\Etoc@nextread\@gobble + \else + \let\Etoc@nextread\Etoc@readtoc + \read #1 to \Etoc@buffer + \global\Etoc@toctoks=\expandafter\expandafter\expandafter + {\expandafter\the\expandafter\Etoc@toctoks\Etoc@buffer}% + \fi + \Etoc@nextread{#1}% +} +% +\def\Etoc@starttoc{% +\begingroup +\makeatletter +\chardef\ET@endline\endlinechar +\@ifpackageloaded{hyperref} + {\ifx\hyper@last\@undefined + \ltx@ifpackageloaded {parskip}{\parskip \z@ }{}% + \IfFileExists {\jobname .toc}{\Hy@WarningNoLine {old toc file + detected, not used; run LaTeX again (cheers from etoc)}}{}% + \expandafter\@gobble\fi}{}% +{\IfFileExists{\jobname .toc} + {\endlinechar=-1\relax + \newread\Etoc@tf + \openin\Etoc@tf\@filef@und + \Etoc@readtoc\Etoc@tf + \closein\Etoc@tf} + {\typeout{No file \jobname .toc.}}}% +\endlinechar\ET@endline +\if@filesw \newwrite \tf@toc \immediate +\openout \tf@toc \jobname .toc\relax \fi +\endgroup} +% +\AtBeginDocument{\Etoc@starttoc} +\def\Etoc@toctoc{% +\ifEtoc@standard +\Etoc@Lazarus +\etocsetstyle{@minusone}{}{}{}{}% +\etocsetstyle{@zero}{}{}{}{}% +\etocsetstyle{@one}{}{}{}{}% +\etocsetstyle{@two}{}{}{}{}% +\etocsetstyle{@three}{}{}{}{}% +\etocsetstyle{@four}{}{}{}{}% +\etocsetstyle{@five}{}{}{}{}% +\else +\let\numberline\@gobble +\fi +\the\Etoc@toctoks +\ifEtoc@notactive\else + \ifEtoc@v \Etoc@end@five\fi + \ifEtoc@iv \Etoc@end@four\fi + \ifEtoc@iii \Etoc@end@three\fi + \ifEtoc@ii \Etoc@end@two\fi + \ifEtoc@i \Etoc@end@one\fi + \ifEtoc@ \Etoc@end@zero\fi + \ifEtoc@j \Etoc@end@minusone\fi +\fi +\global\Etoc@vfalse +\global\Etoc@ivfalse +\global\Etoc@iiifalse +\global\Etoc@iifalse +\global\Etoc@ifalse +\global\Etoc@false +\global\Etoc@jfalse} +% +\def\tableofcontents{\@ifstar{% +\stepcounter{etoc@localtocid}% +\global\Etoc@localtoctrue +\global\let\Etoc@localtop\m@ne +\global\Etoc@stoptocfalse +\global\Etoc@notactivetrue +\addtocontents{toc}{\string\etoc@startlocaltoc +\string{\arabic{etoc@localtocid}\string}}% +\Etoc@tableofcontents +\global\Etoc@notactivefalse +\global\Etoc@stoptocfalse +\global\Etoc@localtocfalse} +{\Etoc@tableofcontents}} +% +\newcommand\etocsettocstyle[2]{% +\long\def\Etoc@tableofcontents +{\ifnum\c@tocdepth>-2\let\Etoc@@next\@firstofone\else +\let\Etoc@@next\@gobble\fi +\Etoc@@next{\begingroup #1\Etoc@toctoc #2\endgroup}}} +% +\newcommand\etocsetstyle[5]{% +\long\expandafter\def + \csname Etoc@begin@\csname Etoc@#1@\endcsname\endcsname {#2}% +\long\expandafter\def + \csname Etoc@prefix@\csname Etoc@#1@\endcsname\endcsname {#3}% +\long\expandafter\def + \csname Etoc@contents@\csname Etoc@#1@\endcsname\endcsname {#4}% +\long\expandafter\def + \csname Etoc@end@\csname Etoc@#1@\endcsname\endcsname {#5}} +% +\def\etocstandardlines{\Etoc@standardtrue} +% +\newcommand\etocfontminusone{\normalfont \large \bfseries} +\newcommand\etocfontzero{\normalfont \normalsize \bfseries} +\newcommand\etocfontone{\normalfont \normalsize \bfseries} +\newcommand\etocfonttwo{\normalfont \normalsize} +\newcommand\etocfontthree{\normalfont \footnotesize} +\newcommand\etocfontfour{\normalfont \footnotesize} +\newcommand\etocfontfive{\normalfont \footnotesize} +% +\newcommand\etocsepminusone{4ex \@plus .5ex \@minus .5ex} +\newcommand\etocsepzero{2.5ex \@plus .4ex \@minus .4ex} +\newcommand\etocsepone{1.5ex \@plus .3ex \@minus .3ex} +\newcommand\etocseptwo{1ex \@plus .15ex \@minus .15ex} +\newcommand\etocsepthree{.25ex \@plus .05ex \@minus .05ex} +% +\newcommand\etocbaselinespreadminusone{1} +\newcommand\etocbaselinespreadzero{1} +\newcommand\etocbaselinespreadone{1} +\newcommand\etocbaselinespreadtwo{1} +\newcommand\etocbaselinespreadthree{.9} +% +\newcommand\etocminusonelrmargins{1em} +\newcommand\etoctoclineleaders +{\hbox{\normalfont\normalsize\hbox to 2ex {\hfil.\hfil}}} +\newcommand\etocabbrevpagename{p.~} +% +\def\etocetoclines{\Etoc@standardfalse +% +\etocsetstyle{@minusone}{\addpenalty\@highpenalty}{} +{\begingroup \etocfontminusone + \addvspace{\etocsepminusone}% + \parindent \z@ + \leftskip \etocminusonelrmargins + \rightskip \etocminusonelrmargins + \parfillskip \@flushglue + \vbox{\etocifnumbered{\etocnumber.~}{}\etocname + \baselineskip\etocbaselinespreadminusone\baselineskip\par}% + \addvspace{\etocsepzero}\nobreak +\endgroup} +{\addpenalty\@secpenalty}% +\etocsetstyle{@zero} +{\addpenalty\@highpenalty}{} +{\begingroup + \etocfontzero + \addvspace{\etocsepzero}% + \parindent \z@ \parfillskip \@flushglue + \vbox{\etocifnumbered{\etocnumber\space}{}\etocname + \baselineskip\etocbaselinespreadzero\baselineskip\par}% + \addvspace{\etocsepone}\addpenalty\@itempenalty +\endgroup} +{\addpenalty\@secpenalty}% +% +\etocsetstyle{@one} +{\addpenalty\@medpenalty} +{} +{\begingroup\etocfontone +\addvspace{\etocsepone}% +\parindent \z@ \parfillskip \z@ +\setbox\z@\vbox{\parfillskip\@flushglue +\etocname\par\setbox\tw@\lastbox +\global\setbox\@ne\hbox{\unhbox\tw@}}% +\dimen\z@=\wd\@ne +\setbox\z@=\etoctoclineleaders +\advance\dimen\z@\wd\z@ +\etocifnumbered +{\setbox\tw@\hbox{\etocfonttwo\etocnumber, \etocabbrevpagename\etocpage}} +{\setbox\tw@\hbox{\etocfonttwo\etocabbrevpagename\etocpage}}% +\advance\dimen\z@\wd\tw@ +\ifdim\dimen\z@ < \linewidth + \vbox{\etocname\nobreak + \leaders\box\z@\hfil\box\tw@ + \baselineskip\etocbaselinespreadone\baselineskip\par} + \else + \vbox{\etocname\nobreak + \ifdim\wd\@ne<\linewidth\leaders\copy\z@\hfil\break\fi + \hbox{}\leaders\box\z@\hfil\box\tw@ + \baselineskip\etocbaselinespreadone\baselineskip\par} +\fi +\addvspace{\etocseptwo}\addpenalty\@itempenalty +\endgroup} +{\addpenalty\@secpenalty}% +% +\etocsetstyle{@two} +{\addpenalty\@medpenalty} +{} +{\begingroup\etocfonttwo +\addvspace{\etocseptwo}% +\parindent \z@ \parfillskip \z@ +\setbox\z@\vbox{\parfillskip\@flushglue +\etocname\par\setbox\tw@\lastbox +\global\setbox\@ne\hbox{\unhbox\tw@}}% +\dimen\z@=\wd\@ne +\setbox\z@=\etoctoclineleaders +\advance\dimen\z@\wd\z@ +\etocifnumbered +{\setbox\tw@\hbox{\etocnumber, \etocabbrevpagename\etocpage}} +{\setbox\tw@\hbox{\etocabbrevpagename\etocpage}}% +\advance\dimen\z@\wd\tw@ +\ifdim\dimen\z@ < \linewidth + \vbox{\etocname\nobreak + \leaders\box\z@\hfil\box\tw@ + \baselineskip\etocbaselinespreadtwo\baselineskip\par} + \else + \vbox{\etocname\nobreak + \ifdim\wd\@ne<\linewidth\leaders\copy\z@\hfil\break\fi + \hbox{}\leaders\box\z@\hfil\box\tw@ + \baselineskip\etocbaselinespreadtwo\baselineskip\par} +\fi +\addvspace{\etocsepthree}\addpenalty\@itempenalty +\endgroup} +{\addpenalty\@secpenalty}% +% +\etocsetstyle{@three} +{\nobreak +\etocfontthree +\addvspace{\etocsepthree}% +\nointerlineskip\noindent +\etocskipfirstprefix} +{\allowbreak\,--\,} +{\etocname} +{\unskip.\hfil\begingroup +\baselineskip\etocbaselinespreadthree\baselineskip +\par\endgroup +\addpenalty{-\@highpenalty}}% +% +\etocsetstyle{@four}{}{}{}{}% +% +\etocsetstyle{@five}{}{}{}{}% +} +% +\newcommand\etocmarkboth[1][\contentsname]{% + \@mkboth {\MakeUppercase #1} + {\MakeUppercase #1}} +\def\etoc@article@tochead#1{\section *{#1\@mkboth + {\MakeUppercase{#1}} + {\MakeUppercase{#1}}}} +\def\etoc@article@tochead@nomarks#1{\section *{#1}} +\def\etoc@book@tochead#1{\chapter *{#1\@mkboth + {\MakeUppercase{#1}} + {\MakeUppercase{#1}}}} +\def\etoc@book@tochead@nomarks#1{\chapter *{#1}} +\let\etoc@standard@tochead\etoc@article@tochead +\let\etoc@standard@tochead@nomarks\etoc@article@tochead@nomarks +\@ifclassloaded{book}{% +\let\etoc@standard@tochead\etoc@book@tochead +\let\etoc@standard@tochead@nomarks\etoc@book@tochead@nomarks}{} +\@ifclassloaded{report}{% +\let\etoc@standard@tochead\etoc@book@tochead +\let\etoc@standard@tochead@nomarks\etoc@book@tochead@nomarks}{} +% +\newcommand\etocstandardheading[1]{% +\etoc@standard@tochead{#1}} +\newcommand\etocstandardheadingnomarks[1]{% +\etoc@standard@tochead@nomarks{#1}} +% +\newcommand\etocabovetocskip{3.5ex \@plus 1ex \@minus .2ex} +\newcommand\etocbelowtocskip{3.5ex \@plus 1ex \@minus .2ex} +\newcommand\etoccolumnsep{2em} +\newcommand\etocmulticolsep{0ex} +\newcommand\etocmulticolpretolerance{-1} +\newcommand\etocmulticoltolerance{200} +% +\newcommand\etocmulticolstyle[2][2]{% +\etocsettocstyle + {\addvspace{\etocabovetocskip}% + \ifnum #1>\@ne\let\Etoc@next\@firstoftwo + \else \let\Etoc@next\@secondoftwo\fi + \Etoc@next{% + \multicolpretolerance\etocmulticolpretolerance + \multicoltolerance\etocmulticoltolerance + \setlength{\columnsep}{\etoccolumnsep}% + \setlength{\multicolsep}{\etocmulticolsep}% + \begin{multicols}{#1}[#2\addvspace{\etocsepminusone}]} + {#2\addvspace{\etocsepminusone}\pretolerance\etocmulticolpretolerance + \tolerance\etocmulticoltolerance}} + {\ifnum #1>\@ne\let\Etoc@next\@firstofone + \else \let\Etoc@next\@gobble\fi + \Etoc@next{\end{multicols}}% + \addvspace{\etocbelowtocskip}}} +% +\newcommand\etocinnertopsep{2ex} +\newcommand\etocinnerbottomsep{3.5ex} +\newcommand\etocinnerleftsep{2em} +\newcommand\etocinnerrightsep{2em} +\newcommand\etoctoprule{\hrule} +\newcommand\etocleftrule{\vrule} +\newcommand\etocrightrule{\vrule} +\newcommand\etocbottomrule{\hrule} +\newcommand\etoctoprulecolorcmd{\relax} +\newcommand\etocbottomrulecolorcmd{\relax} +\newcommand\etocleftrulecolorcmd{\relax} +\newcommand\etocrightrulecolorcmd{\relax} +% +\newcommand\etoc@ruledheading[1]{% + \hbox to \linewidth{% + \hfil #1\hfil\hskip-\linewidth + {\etoctoprulecolorcmd\leaders\etoctoprule\hfil}% + \phantom{#1}% + {\etoctoprulecolorcmd\leaders\etoctoprule\hfil}}% + \nointerlineskip\vskip\etocinnertopsep} +% +\newcommand\etocruledstyle[2][2]{% +\etocsettocstyle + {\addvspace{\etocabovetocskip}% + \ifnum #1>\@ne\let\Etoc@next\@firstoftwo + \else \let\Etoc@next\@secondoftwo\fi + \Etoc@next + {\multicolpretolerance\etocmulticolpretolerance + \multicoltolerance\etocmulticoltolerance + \setlength{\columnsep}{\etoccolumnsep}% + \setlength{\multicolsep}{\etocmulticolsep}% + \begin{multicols}{#1}[\etoc@ruledheading{#2}]} + {\etoc@ruledheading{#2}\nobreak + \pretolerance\etocmulticolpretolerance + \tolerance\etocmulticoltolerance}} + {\ifnum #1>\@ne\let\Etoc@next\@firstofone + \else \let\Etoc@next\@gobble\fi + \Etoc@next{\end{multicols}}% + \addvspace{\etocbelowtocskip}}} +% +\newcommand\etocframedstyle[2][2]{% +\etocsettocstyle{% + \addvspace{\etocabovetocskip}% + \sbox\z@{#2}\dimen\z@\dp\z@ + \ifdim\wd\z@<\linewidth\dp\z@\z@\else\dimen\z@\z@\fi + \hbox to \linewidth{% + \hfil\copy\z@\hfil\hskip-\linewidth + {\etoctoprulecolorcmd\leaders\etoctoprule\hfil}% + \phantom{\box\z@}% + {\etoctoprulecolorcmd\leaders\etoctoprule\hfil}}% + \nointerlineskip\nobreak + \hbox to \linewidth + \bgroup + {\etocleftrulecolorcmd\etocleftrule}% + \kern\etocinnerleftsep + \vbox\bgroup + \kern\dimen\z@ + \vskip\etocinnertopsep + \hbox\bgroup + \setbox\z@\hbox{\etocleftrule\etocrightrule}% + \dimen\z@\linewidth\advance\dimen\z@-\wd\z@ + \advance\dimen\z@-\etocinnerleftsep + \advance\dimen\z@-\etocinnerrightsep + \begin{minipage}{\dimen\z@} + \ifnum #1>\@ne\let\Etoc@next\@firstoftwo + \else \let\Etoc@next\@secondoftwo\fi + \Etoc@next + {\multicolpretolerance\etocmulticolpretolerance + \multicoltolerance\etocmulticoltolerance + \setlength{\columnsep}{\etoccolumnsep}% + \setlength{\multicolsep}{\etocmulticolsep}% + \begin{multicols}{#1}} + {\pretolerance\etocmulticolpretolerance + \tolerance\etocmulticoltolerance}} + {\ifnum #1>\@ne\let\Etoc@next\@firstofone + \else \let\Etoc@next\@gobble\fi + \Etoc@next{\end{multicols}\unskip}% + \end{minipage}\egroup + \vskip\etocinnerbottomsep + \egroup\kern\etocinnerrightsep + \etocrightrulecolorcmd\etocrightrule\egroup + \nointerlineskip\nobreak + \hbox to \linewidth{\etocbottomrulecolorcmd + \leaders\etocbottomrule\hfill} + \addvspace{\etocbelowtocskip}}} +% +\newcommand\etoc@multicoltoc[2][2]{% +\begingroup +\ifnum\c@tocdepth>-2\relax +\etocmulticolstyle[#1]{#2}% + \ifEtoc@star + \def\Etoc@next{\tableofcontents*}% + \else\def\Etoc@next{\tableofcontents}% + \fi +\Etoc@next +\fi\endgroup} +% +\newcommand\etoc@ruledtoc[2][2]{% +\begingroup +\ifnum\c@tocdepth>-2\relax +\etocruledstyle[#1]{#2}% + \ifEtoc@star + \def\Etoc@next{\tableofcontents*}% + \else + \def\Etoc@next{\tableofcontents}% + \fi +\Etoc@next +\fi\endgroup} +% +\newcommand\etoc@framedtoc[2][2]{% +\begingroup +\ifnum\c@tocdepth>-2\relax +\etocframedstyle[#1]{#2}% + \ifEtoc@star + \def\Etoc@next{\tableofcontents*}% + \else + \def\Etoc@next{\tableofcontents}% + \fi +\Etoc@next +\fi\endgroup} +% +\def\etocmulticol{\@ifstar{\global\Etoc@startrue\etoc@multicoltoc} +{\global\Etoc@starfalse\etoc@multicoltoc}} +\def\etocruled{\@ifstar{\global\Etoc@startrue\etoc@ruledtoc} +{\global\Etoc@starfalse\etoc@ruledtoc}} +\def\etocframed{\@ifstar{\global\Etoc@startrue\etoc@framedtoc} +{\global\Etoc@starfalse\etoc@framedtoc}} +% +\etocetoclines +\etocmulticolstyle{\etocstandardheading\contentsname} +\endinput +%</package> +% \end{macrocode} +% \clearpage +% \Finale +% \endinput +\endinput +%% +%% End of file `etoc.dtx'. diff --git a/Master/texmf-dist/source/latex/etoc/etoc.ins b/Master/texmf-dist/source/latex/etoc/etoc.ins new file mode 100644 index 00000000000..08cae55ff24 --- /dev/null +++ b/Master/texmf-dist/source/latex/etoc/etoc.ins @@ -0,0 +1,31 @@ +%% Package `etoc' by Jean-Francois Burnol +%% +%% This file `etoc.ins' is provided for compatibility reasons with +%% TeX installations expecting to find an .ins file +%% +%% It can be used as usual: +%% +%% `latex etoc.ins' extracts `etoc.sty' from `etoc.dtx' +%% +%% But doing directly `latex etoc.dtx' already creates `etoc.sty' +%% +%% `latex etoc.dtx' generates `etoc.sty' (and also `etoc.ins') +%% `latex etoc.dtx' finishes generating the documentation +%% +%% In all cases, put the generated `etoc.sty' file in a suitable +%% location within the TeX installation: +%% etoc.sty -> ................/tex/latex/etoc/ +%% +%% Generated auxiliary files may then be discarded. +%% +\def\batchfile{etoc.ins} +\input docstrip.tex +\askforoverwritefalse +\def\jfpreamble{\defaultpreamble^^J\MetaPrefix^^J% +\string\ProvidesPackage{etoc}^^J% +\space[2012/11/18\space v1.02\space easily customizable TOCs (jfB)]} +\def\jfpostamble{\MetaPrefix\space End of file `\outFileName'.} +\generate{\usepreamble\jfpreamble +\file{etoc.sty}{\from{etoc.dtx}{package}} +\usepostamble\jfpostamble} +\endbatchfile diff --git a/Master/texmf-dist/tex/latex/etoc/etoc.sty b/Master/texmf-dist/tex/latex/etoc/etoc.sty new file mode 100644 index 00000000000..321b9036933 --- /dev/null +++ b/Master/texmf-dist/tex/latex/etoc/etoc.sty @@ -0,0 +1,719 @@ +%% +%% This is file `etoc.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% etoc.dtx (with options: `package') +%% +%% IMPORTANT NOTICE: +%% +%% For the copyright see the source file. +%% +%% Any modified versions of this file must be renamed +%% with new filenames distinct from etoc.sty. +%% +%% For distribution of the original source see the terms +%% for copying and modification in the file etoc.dtx. +%% +%% This generated file may be distributed as long as the +%% original source files, as listed above, are part of the +%% same distribution. (The sources need not necessarily be +%% in the same archive or directory.) +%% +\ProvidesPackage{etoc} + [2012/11/18 v1.02 easily customizable TOCs (jfB)] +%% Copyright (C) 2012 by Jean-Francois Burnol +\NeedsTeXFormat{LaTeX2e} +\RequirePackage{multicol} +\RequirePackage{xspace} +\DeclareOption*{\PackageWarning{etoc}{Option `\CurrentOption' is unknown.}} +\ProcessOptions\relax +\newtoks\Etoc@toctoks +\newif\ifEtoc@j % part +\newif\ifEtoc@ % chapter +\newif\ifEtoc@i % section +\newif\ifEtoc@ii % subsection +\newif\ifEtoc@iii % subsubsection +\newif\ifEtoc@iv % paragraph +\newif\ifEtoc@v % subparagraph +\newif\ifEtoc@number +\newif\ifEtoc@hyperref +\newif\ifEtoc@star +\newif\ifEtoc@standard +\newif\ifEtoc@part +\newif\ifEtoc@localtoc +\newif\ifEtoc@skipthisone +\newif\ifEtoc@stoptoc +\newif\ifEtoc@notactive +\newcounter{etoc@localtocid} +\let\Etoc@@minusone@@\m@ne +\chardef\Etoc@@zero@@\z@ +\chardef\Etoc@@one@@\@ne +\chardef\Etoc@@two@@\tw@ +\chardef\Etoc@@three@@\thr@@ +\chardef\Etoc@@four@@4\relax +\chardef\Etoc@@five@@5\relax +\chardef\Etoc@@six@@6\relax +\let\Etoc@localtop\m@ne +\def\Etoc@@minusone@{minusone} +\def\Etoc@@zero@{zero} +\def\Etoc@@one@{one} +\def\Etoc@@two@{two} +\def\Etoc@@three@{three} +\def\Etoc@@four@{four} +\def\Etoc@@five@{five} +\def\Etoc@Lazarus{% +\def\Etoc@Lazarus@elta##1\Etoc@Lazarus@eltb##2{\let##1##2}% +\Etoc@Lazaruslist} +\def\Etoc@Lazaruslist{} +\def\Etoc@newdisciple#1#2{% + \def\Etoc@Lazarus@elta{\noexpand\Etoc@Lazarus@elta\noexpand}% + \def\Etoc@Lazarus@eltb{\noexpand\Etoc@Lazarus@eltb\noexpand}% + \edef\Etoc@Lazaruslist{\Etoc@Lazaruslist + \Etoc@Lazarus@elta#1 + \Etoc@Lazarus@eltb#2}} +\def\etocsetlevel#1#2{% + \let\Etoc@next\@firstofone + \ifcase#2\or\or\or\or\or\else\ifnum#2=\m@ne\else + \PackageWarning{etoc} + {unexpected value `#2' in \string\etocsetlevel.^^J% + Should be -1, 0, 1, 2, 3, 4 or 5. Set to -1}% + \expandafter\def\csname Etoc@#1@\endcsname{minusone}% + \expandafter\let\csname Etoc@#1@@\endcsname\m@ne + \let\Etoc@next\@gobble\fi\fi + \if@noskipsec + \else + \expandafter\expandafter\expandafter + \let\expandafter\expandafter\csname Etoc@savedl@#1\endcsname + \csname l@#1\endcsname + \expandafter\let \csname l@#1\endcsname\Etoc@lxyz + \fi + \expandafter\expandafter\expandafter\Etoc@newdisciple + \expandafter\expandafter + \csname l@#1\endcsname\csname Etoc@savedl@#1\endcsname + \Etoc@next + {\ifcase#2\relax + \expandafter\let \csname Etoc@#1@@\endcsname\Etoc@@zero@@ + \expandafter\def \csname Etoc@#1@\endcsname{zero}% + \or + \expandafter\let \csname Etoc@#1@@\endcsname\Etoc@@one@@ + \expandafter\def \csname Etoc@#1@\endcsname{one}% + \or + \expandafter\let \csname Etoc@#1@@\endcsname\Etoc@@two@@ + \expandafter\def \csname Etoc@#1@\endcsname{two}% + \or + \expandafter\let \csname Etoc@#1@@\endcsname\Etoc@@three@@ + \expandafter\def \csname Etoc@#1@\endcsname{three}% + \or + \expandafter\let \csname Etoc@#1@@\endcsname\Etoc@@four@@ + \expandafter\def \csname Etoc@#1@\endcsname{four}% + \or + \expandafter\let \csname Etoc@#1@@\endcsname\Etoc@@five@@ + \expandafter\def \csname Etoc@#1@\endcsname{five}% + \else + \expandafter\let \csname Etoc@#1@@\endcsname\Etoc@@minusone@@ + \expandafter\def \csname Etoc@#1@\endcsname{minusone}% + \fi}} +\etocsetlevel{part}{-1} +\etocsetlevel{chapter}{0} +\etocsetlevel{section}{1} +\etocsetlevel{subsection}{2} +\etocsetlevel{subsubsection}{3} +\etocsetlevel{paragraph}{4} +\etocsetlevel{subparagraph}{5} +\AtBeginDocument{% +\def\Etoc@Lazarus@elta#1\Etoc@Lazarus@eltb#2{\let#2#1\let#1\Etoc@lxyz}% +\Etoc@Lazaruslist +\let\Etoc@savedcontentsline\contentsline +\let\contentsline\Etoc@etoccontentsline +\@ifpackageloaded{hyperref} +{\Etoc@hyperreftrue +\def\Etoc@et@hop#1#2#3#4#5{#1{#3}{#4}{#5}#2}} +{\Etoc@hyperreffalse +\def\Etoc@et@hop#1#2#3#4{#1{#3}{#4}#2}}} + \def\Etoc@swa#1{% + \Etoc@et@hop + {\Etoc@savedcontentsline{#1}} + {\Etoc@prefix\Etoc@contents}} + \def\Etoc@swb#1{% + \Etoc@et@hop + {\Etoc@savedcontentsline{#1}} + {\Etoc@contents}} + \let\etocskipfirstprefix\@thirdofthree +\def\etoc@startlocaltoc#1{% +\let\Etoc@next\relax + \ifEtoc@localtoc + \ifEtoc@notactive + \ifnum #1<\c@etoc@localtocid\relax + \else + \ifEtoc@j \global\let\Etoc@localtop\Etoc@@zero@@ \fi + \ifEtoc@ \global\let\Etoc@localtop\Etoc@@one@@ \fi + \ifEtoc@i \global\let\Etoc@localtop\Etoc@@two@@ \fi + \ifEtoc@ii \global\let\Etoc@localtop\Etoc@@three@@ \fi + \ifEtoc@iii \global\let\Etoc@localtop\Etoc@@four@@ \fi + \ifEtoc@iv \global\let\Etoc@localtop\Etoc@@five@@ \fi + \ifEtoc@v \global\let\Etoc@localtop\Etoc@@six@@ \fi + \def\Etoc@next{\global\Etoc@notactivefalse + \global\Etoc@vfalse + \global\Etoc@ivfalse + \global\Etoc@iiifalse + \global\Etoc@iifalse + \global\Etoc@ifalse + \global\Etoc@false + \global\Etoc@jfalse}% + \fi + \fi\fi +\Etoc@next} +\def\Etoc@setflags #1{% + \ifcase #1\relax + \global\Etoc@vfalse + \global\Etoc@ivfalse + \global\Etoc@iiifalse + \global\Etoc@iifalse + \global\Etoc@ifalse + \global\Etoc@true + \or + \global\Etoc@vfalse + \global\Etoc@ivfalse + \global\Etoc@iiifalse + \global\Etoc@iifalse + \global\Etoc@itrue + \or + \global\Etoc@vfalse + \global\Etoc@ivfalse + \global\Etoc@iiifalse + \global\Etoc@iitrue + \or + \global\Etoc@vfalse + \global\Etoc@ivfalse + \global\Etoc@iiitrue + \or + \global\Etoc@vfalse + \global\Etoc@ivtrue + \or + \global\Etoc@vtrue + \else + \global\Etoc@vfalse + \global\Etoc@ivfalse + \global\Etoc@iiifalse + \global\Etoc@iifalse + \global\Etoc@ifalse + \global\Etoc@false + \global\Etoc@jtrue + \fi} +\def\Etoc@etoccontentsline#1{% + \global\expandafter\let\expandafter\Etoc@tmp\csname Etoc@#1@@\endcsname + \global\Etoc@partfalse + \Etoc@skipthisonefalse + \ifEtoc@hyperref + \def\Etoc@next{\expandafter\@gobbletwo\@gobblefour}% + \else + \def\Etoc@next{\expandafter\@gobble\@gobblefour}% + \fi + \ifEtoc@localtoc + \let\Etoc@prenext\relax + \ifEtoc@stoptoc + \Etoc@skipthisonetrue + \fi + \ifnum\Etoc@tmp<\Etoc@localtop + \def\Etoc@prenext{\global\Etoc@stoptoctrue}% + \Etoc@skipthisonetrue + \fi + \ifEtoc@notactive + \def\Etoc@prenext{\Etoc@setflags{\Etoc@tmp}}% + \Etoc@skipthisonetrue + \fi + \Etoc@prenext + \fi + \ifnum\c@tocdepth<\Etoc@tmp\relax\else + \ifEtoc@skipthisone\else + \global\let\Etoc@next\relax + \ifcase\Etoc@tmp + \ifEtoc@v \Etoc@end@five\fi + \ifEtoc@iv \Etoc@end@four\fi + \ifEtoc@iii \Etoc@end@three\fi + \ifEtoc@ii \Etoc@end@two\fi + \ifEtoc@i \Etoc@end@one\fi + \ifEtoc@ \else \def\Etoc@next{\Etoc@begin@zero}\fi + \gdef\Etoc@contents{\Etoc@contents@zero}% + \gdef\Etoc@prefix{\Etoc@prefix@zero}% + \or + \ifEtoc@v \Etoc@end@five\fi + \ifEtoc@iv \Etoc@end@four\fi + \ifEtoc@iii \Etoc@end@three\fi + \ifEtoc@ii \Etoc@end@two\fi + \ifEtoc@i \else \def\Etoc@next{\Etoc@begin@one}\fi + \gdef\Etoc@contents{\Etoc@contents@one}% + \gdef\Etoc@prefix{\Etoc@prefix@one}% + \or + \ifEtoc@v \Etoc@end@five\fi + \ifEtoc@iv \Etoc@end@four\fi + \ifEtoc@iii \Etoc@end@three\fi + \ifEtoc@ii \else \def\Etoc@next{\Etoc@begin@two}\fi + \gdef\Etoc@contents{\Etoc@contents@two}% + \gdef\Etoc@prefix{\Etoc@prefix@two}% + \or + \ifEtoc@v \Etoc@end@five\fi + \ifEtoc@iv \Etoc@end@four\fi + \ifEtoc@iii \else \def\Etoc@next{\Etoc@begin@three}\fi + \gdef\Etoc@contents{\Etoc@contents@three}% + \gdef\Etoc@prefix{\Etoc@prefix@three}% + \or + \ifEtoc@v \Etoc@end@five\fi + \ifEtoc@iv \else \def\Etoc@next{\Etoc@begin@four}\fi + \gdef\Etoc@contents{\Etoc@contents@four}% + \gdef\Etoc@prefix{\Etoc@prefix@four}% + \or + \ifEtoc@v \else \def\Etoc@next{\Etoc@begin@five}\fi + \gdef\Etoc@contents{\Etoc@contents@five}% + \gdef\Etoc@prefix{\Etoc@prefix@five}% + \else + \ifEtoc@v \Etoc@end@five\fi + \ifEtoc@iv \Etoc@end@four\fi + \ifEtoc@iii \Etoc@end@three\fi + \ifEtoc@ii \Etoc@end@two\fi + \ifEtoc@i \Etoc@end@one\fi + \ifEtoc@ \Etoc@end@zero\fi + \ifEtoc@j \else \def\Etoc@next{\Etoc@begin@minusone}\fi + \global\Etoc@parttrue + \gdef\Etoc@contents{\Etoc@contents@minusone}% + \gdef\Etoc@prefix{\Etoc@prefix@minusone}% + \fi + \Etoc@setflags{\Etoc@tmp}% + \fi\fi + \Etoc@next + \@firstoftwo{\Etoc@swa{#1}}{\Etoc@swb{#1}}} +\def\Etoc@lxyz #1#2{\global\@namedef{etocname }{\leavevmode #1\xspace}% + \global\@namedef{etocpage }{\leavevmode #2\xspace}% + \Etoc@getnb #1\relax\relax\etoc@ + \ifEtoc@number\else\ifEtoc@part + \Etoc@getit #1\hspace\relax\etoc@\fi\fi} +\def\Etoc@getnb #1{\let\Etoc@next\Etoc@getnb@nohyp +\ifEtoc@hyperref\ifx #1\hyper@linkstart + \let\Etoc@next\Etoc@getnb@hyp\fi\fi\Etoc@next #1} +\def\Etoc@getit #1{\let\Etoc@next\Etoc@getit@nohyp +\ifEtoc@hyperref\ifx #1\hyper@linkstart + \let\Etoc@next\Etoc@getit@hyp\fi\fi\Etoc@next #1} +\def\Etoc@getnb@nohyp #1#2#3\etoc@{% +\ifx #1\numberline +\global\@namedef{etocnumber }{\leavevmode #2\xspace}\global\Etoc@numbertrue +\else +\global\@namedef{etocnumber }{\leavevmode\xspace}\global\Etoc@numberfalse +\fi} +\def\Etoc@getnb@hyp #1#2#3#4#5#6\etoc@{% + \def\Etoc@getnbr ##1##2##3\etoc@{% + \ifx ##1\numberline + \global\@namedef{etocnumber }{\leavevmode #1{#2}{#3}{##2}#5\xspace}% + \global\Etoc@numbertrue + \else + \global\@namedef{etocnumber }{\leavevmode\xspace}% + \global\Etoc@numberfalse + \fi}% + \Etoc@getnbr #4\relax\relax\etoc@} +\def\Etoc@getit@nohyp #1\hspace#2#3\etoc@{% + \def\Etoc@getname ##1\hspace\relax\etoc@{% + \global\@namedef{etocname }{\leavevmode ##1\xspace}}% + \ifx \relax#2\else + \global\@namedef{etocnumber }{\leavevmode #1\xspace}% + \global\Etoc@numbertrue + \Etoc@getname #3\etoc@\fi} +\def\Etoc@getit@hyp #1#2#3#4#5#6\etoc@{% + \def\Etoc@getname ##1\hspace\relax\etoc@{% + \global\@namedef{etocname }{\leavevmode #1{#2}{#3}{##1}#5}\xspace}% + \def\Etoc@getnbr ##1\hspace##2##3\etoc@{% + \ifx\relax##2\else + \global\@namedef{etocnumber }{\leavevmode #1{#2}{#3}{##1}#5\xspace}% + \global\Etoc@numbertrue + \Etoc@getname ##3\etoc@\fi}% + \Etoc@getnbr #4\hspace\relax\etoc@} +\edef\etocpage{\noexpand\protect\expandafter\noexpand + \csname etocpage \endcsname} +\edef\etocname{\noexpand\protect\expandafter\noexpand + \csname etocname \endcsname} +\edef\etocnumber{\noexpand\protect\expandafter\noexpand + \csname etocnumber \endcsname} +\@namedef{etocifnumbered }{\ifEtoc@number +\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi} +\edef\etocifnumbered{\noexpand\protect\expandafter\noexpand + \csname etocifnumbered \endcsname} +\def\Etoc@readtoc#1{% + \ifeof #1 + \let\Etoc@nextread\@gobble + \else + \let\Etoc@nextread\Etoc@readtoc + \read #1 to \Etoc@buffer + \global\Etoc@toctoks=\expandafter\expandafter\expandafter + {\expandafter\the\expandafter\Etoc@toctoks\Etoc@buffer}% + \fi + \Etoc@nextread{#1}% +} +\def\Etoc@starttoc{% +\begingroup +\makeatletter +\chardef\ET@endline\endlinechar +\@ifpackageloaded{hyperref} + {\ifx\hyper@last\@undefined + \ltx@ifpackageloaded {parskip}{\parskip \z@ }{}% + \IfFileExists {\jobname .toc}{\Hy@WarningNoLine {old toc file + detected, not used; run LaTeX again (cheers from etoc)}}{}% + \expandafter\@gobble\fi}{}% +{\IfFileExists{\jobname .toc} + {\endlinechar=-1\relax + \newread\Etoc@tf + \openin\Etoc@tf\@filef@und + \Etoc@readtoc\Etoc@tf + \closein\Etoc@tf} + {\typeout{No file \jobname .toc.}}}% +\endlinechar\ET@endline +\if@filesw \newwrite \tf@toc \immediate +\openout \tf@toc \jobname .toc\relax \fi +\endgroup} +\AtBeginDocument{\Etoc@starttoc} +\def\Etoc@toctoc{% +\ifEtoc@standard +\Etoc@Lazarus +\etocsetstyle{@minusone}{}{}{}{}% +\etocsetstyle{@zero}{}{}{}{}% +\etocsetstyle{@one}{}{}{}{}% +\etocsetstyle{@two}{}{}{}{}% +\etocsetstyle{@three}{}{}{}{}% +\etocsetstyle{@four}{}{}{}{}% +\etocsetstyle{@five}{}{}{}{}% +\else +\let\numberline\@gobble +\fi +\the\Etoc@toctoks +\ifEtoc@notactive\else + \ifEtoc@v \Etoc@end@five\fi + \ifEtoc@iv \Etoc@end@four\fi + \ifEtoc@iii \Etoc@end@three\fi + \ifEtoc@ii \Etoc@end@two\fi + \ifEtoc@i \Etoc@end@one\fi + \ifEtoc@ \Etoc@end@zero\fi + \ifEtoc@j \Etoc@end@minusone\fi +\fi +\global\Etoc@vfalse +\global\Etoc@ivfalse +\global\Etoc@iiifalse +\global\Etoc@iifalse +\global\Etoc@ifalse +\global\Etoc@false +\global\Etoc@jfalse} +\def\tableofcontents{\@ifstar{% +\stepcounter{etoc@localtocid}% +\global\Etoc@localtoctrue +\global\let\Etoc@localtop\m@ne +\global\Etoc@stoptocfalse +\global\Etoc@notactivetrue +\addtocontents{toc}{\string\etoc@startlocaltoc +\string{\arabic{etoc@localtocid}\string}}% +\Etoc@tableofcontents +\global\Etoc@notactivefalse +\global\Etoc@stoptocfalse +\global\Etoc@localtocfalse} +{\Etoc@tableofcontents}} +\newcommand\etocsettocstyle[2]{% +\long\def\Etoc@tableofcontents +{\ifnum\c@tocdepth>-2\let\Etoc@@next\@firstofone\else +\let\Etoc@@next\@gobble\fi +\Etoc@@next{\begingroup #1\Etoc@toctoc #2\endgroup}}} +\newcommand\etocsetstyle[5]{% +\long\expandafter\def + \csname Etoc@begin@\csname Etoc@#1@\endcsname\endcsname {#2}% +\long\expandafter\def + \csname Etoc@prefix@\csname Etoc@#1@\endcsname\endcsname {#3}% +\long\expandafter\def + \csname Etoc@contents@\csname Etoc@#1@\endcsname\endcsname {#4}% +\long\expandafter\def + \csname Etoc@end@\csname Etoc@#1@\endcsname\endcsname {#5}} +\def\etocstandardlines{\Etoc@standardtrue} +\newcommand\etocfontminusone{\normalfont \large \bfseries} +\newcommand\etocfontzero{\normalfont \normalsize \bfseries} +\newcommand\etocfontone{\normalfont \normalsize \bfseries} +\newcommand\etocfonttwo{\normalfont \normalsize} +\newcommand\etocfontthree{\normalfont \footnotesize} +\newcommand\etocfontfour{\normalfont \footnotesize} +\newcommand\etocfontfive{\normalfont \footnotesize} +\newcommand\etocsepminusone{4ex \@plus .5ex \@minus .5ex} +\newcommand\etocsepzero{2.5ex \@plus .4ex \@minus .4ex} +\newcommand\etocsepone{1.5ex \@plus .3ex \@minus .3ex} +\newcommand\etocseptwo{1ex \@plus .15ex \@minus .15ex} +\newcommand\etocsepthree{.25ex \@plus .05ex \@minus .05ex} +\newcommand\etocbaselinespreadminusone{1} +\newcommand\etocbaselinespreadzero{1} +\newcommand\etocbaselinespreadone{1} +\newcommand\etocbaselinespreadtwo{1} +\newcommand\etocbaselinespreadthree{.9} +\newcommand\etocminusonelrmargins{1em} +\newcommand\etoctoclineleaders +{\hbox{\normalfont\normalsize\hbox to 2ex {\hfil.\hfil}}} +\newcommand\etocabbrevpagename{p.~} +\def\etocetoclines{\Etoc@standardfalse +\etocsetstyle{@minusone}{\addpenalty\@highpenalty}{} +{\begingroup \etocfontminusone + \addvspace{\etocsepminusone}% + \parindent \z@ + \leftskip \etocminusonelrmargins + \rightskip \etocminusonelrmargins + \parfillskip \@flushglue + \vbox{\etocifnumbered{\etocnumber.~}{}\etocname + \baselineskip\etocbaselinespreadminusone\baselineskip\par}% + \addvspace{\etocsepzero}\nobreak +\endgroup} +{\addpenalty\@secpenalty}% +\etocsetstyle{@zero} +{\addpenalty\@highpenalty}{} +{\begingroup + \etocfontzero + \addvspace{\etocsepzero}% + \parindent \z@ \parfillskip \@flushglue + \vbox{\etocifnumbered{\etocnumber\space}{}\etocname + \baselineskip\etocbaselinespreadzero\baselineskip\par}% + \addvspace{\etocsepone}\addpenalty\@itempenalty +\endgroup} +{\addpenalty\@secpenalty}% +\etocsetstyle{@one} +{\addpenalty\@medpenalty} +{} +{\begingroup\etocfontone +\addvspace{\etocsepone}% +\parindent \z@ \parfillskip \z@ +\setbox\z@\vbox{\parfillskip\@flushglue +\etocname\par\setbox\tw@\lastbox +\global\setbox\@ne\hbox{\unhbox\tw@}}% +\dimen\z@=\wd\@ne +\setbox\z@=\etoctoclineleaders +\advance\dimen\z@\wd\z@ +\etocifnumbered +{\setbox\tw@\hbox{\etocfonttwo\etocnumber, \etocabbrevpagename\etocpage}} +{\setbox\tw@\hbox{\etocfonttwo\etocabbrevpagename\etocpage}}% +\advance\dimen\z@\wd\tw@ +\ifdim\dimen\z@ < \linewidth + \vbox{\etocname\nobreak + \leaders\box\z@\hfil\box\tw@ + \baselineskip\etocbaselinespreadone\baselineskip\par} + \else + \vbox{\etocname\nobreak + \ifdim\wd\@ne<\linewidth\leaders\copy\z@\hfil\break\fi + \hbox{}\leaders\box\z@\hfil\box\tw@ + \baselineskip\etocbaselinespreadone\baselineskip\par} +\fi +\addvspace{\etocseptwo}\addpenalty\@itempenalty +\endgroup} +{\addpenalty\@secpenalty}% +\etocsetstyle{@two} +{\addpenalty\@medpenalty} +{} +{\begingroup\etocfonttwo +\addvspace{\etocseptwo}% +\parindent \z@ \parfillskip \z@ +\setbox\z@\vbox{\parfillskip\@flushglue +\etocname\par\setbox\tw@\lastbox +\global\setbox\@ne\hbox{\unhbox\tw@}}% +\dimen\z@=\wd\@ne +\setbox\z@=\etoctoclineleaders +\advance\dimen\z@\wd\z@ +\etocifnumbered +{\setbox\tw@\hbox{\etocnumber, \etocabbrevpagename\etocpage}} +{\setbox\tw@\hbox{\etocabbrevpagename\etocpage}}% +\advance\dimen\z@\wd\tw@ +\ifdim\dimen\z@ < \linewidth + \vbox{\etocname\nobreak + \leaders\box\z@\hfil\box\tw@ + \baselineskip\etocbaselinespreadtwo\baselineskip\par} + \else + \vbox{\etocname\nobreak + \ifdim\wd\@ne<\linewidth\leaders\copy\z@\hfil\break\fi + \hbox{}\leaders\box\z@\hfil\box\tw@ + \baselineskip\etocbaselinespreadtwo\baselineskip\par} +\fi +\addvspace{\etocsepthree}\addpenalty\@itempenalty +\endgroup} +{\addpenalty\@secpenalty}% +\etocsetstyle{@three} +{\nobreak +\etocfontthree +\addvspace{\etocsepthree}% +\nointerlineskip\noindent +\etocskipfirstprefix} +{\allowbreak\,--\,} +{\etocname} +{\unskip.\hfil\begingroup +\baselineskip\etocbaselinespreadthree\baselineskip +\par\endgroup +\addpenalty{-\@highpenalty}}% +\etocsetstyle{@four}{}{}{}{}% +\etocsetstyle{@five}{}{}{}{}% +} +\newcommand\etocmarkboth[1][\contentsname]{% + \@mkboth {\MakeUppercase #1} + {\MakeUppercase #1}} +\def\etoc@article@tochead#1{\section *{#1\@mkboth + {\MakeUppercase{#1}} + {\MakeUppercase{#1}}}} +\def\etoc@article@tochead@nomarks#1{\section *{#1}} +\def\etoc@book@tochead#1{\chapter *{#1\@mkboth + {\MakeUppercase{#1}} + {\MakeUppercase{#1}}}} +\def\etoc@book@tochead@nomarks#1{\chapter *{#1}} +\let\etoc@standard@tochead\etoc@article@tochead +\let\etoc@standard@tochead@nomarks\etoc@article@tochead@nomarks +\@ifclassloaded{book}{% +\let\etoc@standard@tochead\etoc@book@tochead +\let\etoc@standard@tochead@nomarks\etoc@book@tochead@nomarks}{} +\@ifclassloaded{report}{% +\let\etoc@standard@tochead\etoc@book@tochead +\let\etoc@standard@tochead@nomarks\etoc@book@tochead@nomarks}{} +\newcommand\etocstandardheading[1]{% +\etoc@standard@tochead{#1}} +\newcommand\etocstandardheadingnomarks[1]{% +\etoc@standard@tochead@nomarks{#1}} +\newcommand\etocabovetocskip{3.5ex \@plus 1ex \@minus .2ex} +\newcommand\etocbelowtocskip{3.5ex \@plus 1ex \@minus .2ex} +\newcommand\etoccolumnsep{2em} +\newcommand\etocmulticolsep{0ex} +\newcommand\etocmulticolpretolerance{-1} +\newcommand\etocmulticoltolerance{200} +\newcommand\etocmulticolstyle[2][2]{% +\etocsettocstyle + {\addvspace{\etocabovetocskip}% + \ifnum #1>\@ne\let\Etoc@next\@firstoftwo + \else \let\Etoc@next\@secondoftwo\fi + \Etoc@next{% + \multicolpretolerance\etocmulticolpretolerance + \multicoltolerance\etocmulticoltolerance + \setlength{\columnsep}{\etoccolumnsep}% + \setlength{\multicolsep}{\etocmulticolsep}% + \begin{multicols}{#1}[#2\addvspace{\etocsepminusone}]} + {#2\addvspace{\etocsepminusone}\pretolerance\etocmulticolpretolerance + \tolerance\etocmulticoltolerance}} + {\ifnum #1>\@ne\let\Etoc@next\@firstofone + \else \let\Etoc@next\@gobble\fi + \Etoc@next{\end{multicols}}% + \addvspace{\etocbelowtocskip}}} +\newcommand\etocinnertopsep{2ex} +\newcommand\etocinnerbottomsep{3.5ex} +\newcommand\etocinnerleftsep{2em} +\newcommand\etocinnerrightsep{2em} +\newcommand\etoctoprule{\hrule} +\newcommand\etocleftrule{\vrule} +\newcommand\etocrightrule{\vrule} +\newcommand\etocbottomrule{\hrule} +\newcommand\etoctoprulecolorcmd{\relax} +\newcommand\etocbottomrulecolorcmd{\relax} +\newcommand\etocleftrulecolorcmd{\relax} +\newcommand\etocrightrulecolorcmd{\relax} +\newcommand\etoc@ruledheading[1]{% + \hbox to \linewidth{% + \hfil #1\hfil\hskip-\linewidth + {\etoctoprulecolorcmd\leaders\etoctoprule\hfil}% + \phantom{#1}% + {\etoctoprulecolorcmd\leaders\etoctoprule\hfil}}% + \nointerlineskip\vskip\etocinnertopsep} +\newcommand\etocruledstyle[2][2]{% +\etocsettocstyle + {\addvspace{\etocabovetocskip}% + \ifnum #1>\@ne\let\Etoc@next\@firstoftwo + \else \let\Etoc@next\@secondoftwo\fi + \Etoc@next + {\multicolpretolerance\etocmulticolpretolerance + \multicoltolerance\etocmulticoltolerance + \setlength{\columnsep}{\etoccolumnsep}% + \setlength{\multicolsep}{\etocmulticolsep}% + \begin{multicols}{#1}[\etoc@ruledheading{#2}]} + {\etoc@ruledheading{#2}\nobreak + \pretolerance\etocmulticolpretolerance + \tolerance\etocmulticoltolerance}} + {\ifnum #1>\@ne\let\Etoc@next\@firstofone + \else \let\Etoc@next\@gobble\fi + \Etoc@next{\end{multicols}}% + \addvspace{\etocbelowtocskip}}} +\newcommand\etocframedstyle[2][2]{% +\etocsettocstyle{% + \addvspace{\etocabovetocskip}% + \sbox\z@{#2}\dimen\z@\dp\z@ + \ifdim\wd\z@<\linewidth\dp\z@\z@\else\dimen\z@\z@\fi + \hbox to \linewidth{% + \hfil\copy\z@\hfil\hskip-\linewidth + {\etoctoprulecolorcmd\leaders\etoctoprule\hfil}% + \phantom{\box\z@}% + {\etoctoprulecolorcmd\leaders\etoctoprule\hfil}}% + \nointerlineskip\nobreak + \hbox to \linewidth + \bgroup + {\etocleftrulecolorcmd\etocleftrule}% + \kern\etocinnerleftsep + \vbox\bgroup + \kern\dimen\z@ + \vskip\etocinnertopsep + \hbox\bgroup + \setbox\z@\hbox{\etocleftrule\etocrightrule}% + \dimen\z@\linewidth\advance\dimen\z@-\wd\z@ + \advance\dimen\z@-\etocinnerleftsep + \advance\dimen\z@-\etocinnerrightsep + \begin{minipage}{\dimen\z@} + \ifnum #1>\@ne\let\Etoc@next\@firstoftwo + \else \let\Etoc@next\@secondoftwo\fi + \Etoc@next + {\multicolpretolerance\etocmulticolpretolerance + \multicoltolerance\etocmulticoltolerance + \setlength{\columnsep}{\etoccolumnsep}% + \setlength{\multicolsep}{\etocmulticolsep}% + \begin{multicols}{#1}} + {\pretolerance\etocmulticolpretolerance + \tolerance\etocmulticoltolerance}} + {\ifnum #1>\@ne\let\Etoc@next\@firstofone + \else \let\Etoc@next\@gobble\fi + \Etoc@next{\end{multicols}\unskip}% + \end{minipage}\egroup + \vskip\etocinnerbottomsep + \egroup\kern\etocinnerrightsep + \etocrightrulecolorcmd\etocrightrule\egroup + \nointerlineskip\nobreak + \hbox to \linewidth{\etocbottomrulecolorcmd + \leaders\etocbottomrule\hfill} + \addvspace{\etocbelowtocskip}}} +\newcommand\etoc@multicoltoc[2][2]{% +\begingroup +\ifnum\c@tocdepth>-2\relax +\etocmulticolstyle[#1]{#2}% + \ifEtoc@star + \def\Etoc@next{\tableofcontents*}% + \else\def\Etoc@next{\tableofcontents}% + \fi +\Etoc@next +\fi\endgroup} +\newcommand\etoc@ruledtoc[2][2]{% +\begingroup +\ifnum\c@tocdepth>-2\relax +\etocruledstyle[#1]{#2}% + \ifEtoc@star + \def\Etoc@next{\tableofcontents*}% + \else + \def\Etoc@next{\tableofcontents}% + \fi +\Etoc@next +\fi\endgroup} +\newcommand\etoc@framedtoc[2][2]{% +\begingroup +\ifnum\c@tocdepth>-2\relax +\etocframedstyle[#1]{#2}% + \ifEtoc@star + \def\Etoc@next{\tableofcontents*}% + \else + \def\Etoc@next{\tableofcontents}% + \fi +\Etoc@next +\fi\endgroup} +\def\etocmulticol{\@ifstar{\global\Etoc@startrue\etoc@multicoltoc} +{\global\Etoc@starfalse\etoc@multicoltoc}} +\def\etocruled{\@ifstar{\global\Etoc@startrue\etoc@ruledtoc} +{\global\Etoc@starfalse\etoc@ruledtoc}} +\def\etocframed{\@ifstar{\global\Etoc@startrue\etoc@framedtoc} +{\global\Etoc@starfalse\etoc@framedtoc}} +\etocetoclines +\etocmulticolstyle{\etocstandardheading\contentsname} +\endinput +%% +%% End of file `etoc.sty'. diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check index b10a0f48d2e..f3857148dd5 100755 --- a/Master/tlpkg/bin/tlpkg-ctan-check +++ b/Master/tlpkg/bin/tlpkg-ctan-check @@ -157,7 +157,7 @@ my @TLP_working = qw( eqell eqlist eqname eqnarray eqparbox errata es-tex-faq erdc esdiff esint esint-type1 esk eskd eskdx eso-pic esstix esvect estcpmm - etaremune etex-pkg etextools ethiop ethiop-t1 etoolbox etoolbox-de + etaremune etex-pkg etextools ethiop ethiop-t1 etoc etoolbox etoolbox-de euenc eukdate euler eulervm euro euro-ce europecv eurosym everyhook everypage diff --git a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc index c23f41273ca..ed1eb96e53e 100644 --- a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc @@ -238,6 +238,7 @@ depend esint depend esint-type1 depend etaremune depend etextools +depend etoc depend etoolbox depend eukdate depend europecv diff --git a/Master/tlpkg/tlpsrc/etoc.tlpsrc b/Master/tlpkg/tlpsrc/etoc.tlpsrc new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/Master/tlpkg/tlpsrc/etoc.tlpsrc |