From 76def1765b0dafeba9f05e03b8ae3d89bf3b234d Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 30 Nov 2012 23:32:59 +0000 Subject: etoc (30nov12) git-svn-id: svn://tug.org/texlive/trunk@28397 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/etoc/etoc.sty | 476 +++++++++++++++++++++--------- 1 file changed, 334 insertions(+), 142 deletions(-) (limited to 'Master/texmf-dist/tex') diff --git a/Master/texmf-dist/tex/latex/etoc/etoc.sty b/Master/texmf-dist/tex/latex/etoc/etoc.sty index c54f5c95a62..0fbedff0f51 100644 --- a/Master/texmf-dist/tex/latex/etoc/etoc.sty +++ b/Master/texmf-dist/tex/latex/etoc/etoc.sty @@ -22,7 +22,7 @@ %% in the same archive or directory.) %% \ProvidesPackage{etoc} - [2012/11/24 v1.04 easily customizable TOCs (jfB)] + [2012/11/28 v1.05 easily customizable TOCs (jfB)] %% Package `etoc' by Jean-Francois Burnol %% Copyright (C) 2012 by Jean-Francois Burnol \NeedsTeXFormat{LaTeX2e} @@ -31,6 +31,7 @@ \DeclareOption*{\PackageWarning{etoc}{Option `\CurrentOption' is unknown.}} \ProcessOptions\relax \newtoks\Etoc@toctoks +\newif\ifEtoc@jj % book \newif\ifEtoc@j % part \newif\ifEtoc@ % chapter \newif\ifEtoc@i % section @@ -40,7 +41,7 @@ \newif\ifEtoc@v % subparagraph \newif\ifEtoc@number \newif\ifEtoc@hyperref -\newif\ifEtoc@star +\newif\ifEtoc@tocwithid \newif\ifEtoc@standard \newif\ifEtoc@part \newif\ifEtoc@localtoc @@ -49,15 +50,18 @@ \newif\ifEtoc@notactive \newcounter{etoc@tocid} \newif\ifEtoc@mustclosegroup +\@ifclassloaded{memoir}{\def\Etoc@minf{-\thr@@}}{\def\Etoc@minf{-\tw@}} +\def\Etoc@@minustwo@@{-\tw@} \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 +\chardef\Etoc@@four@@ 4 +\chardef\Etoc@@five@@ 5 +\chardef\Etoc@@six@@ 6 +\let\Etoc@localtop\Etoc@@minustwo@@ +\def\Etoc@@minustwo@{minustwo} \def\Etoc@@minusone@{minusone} \def\Etoc@@zero@{zero} \def\Etoc@@one@{one} @@ -77,13 +81,14 @@ \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 + \ifcase#2\or\or\or\or\or + \else\ifnum#2=\m@ne\else\ifnum#2=-\tw@\else \PackageWarning{etoc} {unexpected value `#2' in \string\etocsetlevel.^^J% - Should be -1, 0, 1, 2, 3, 4 or 5. Set to -1}% + Should be -2,-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 + \let\Etoc@next\@gobble\fi\fi\fi \if@noskipsec \else \expandafter\expandafter\expandafter @@ -114,9 +119,15 @@ \expandafter\let \csname Etoc@#1@@\endcsname\Etoc@@five@@ \expandafter\def \csname Etoc@#1@\endcsname{five}% \else + \ifnum#2=\m@ne \expandafter\let \csname Etoc@#1@@\endcsname\Etoc@@minusone@@ \expandafter\def \csname Etoc@#1@\endcsname{minusone}% + \else + \expandafter\let \csname Etoc@#1@@\endcsname\Etoc@@minustwo@@ + \expandafter\def \csname Etoc@#1@\endcsname{minustwo}% + \fi \fi}} +\etocsetlevel{book}{-2} \etocsetlevel{part}{-1} \etocsetlevel{chapter}{0} \etocsetlevel{section}{1} @@ -172,6 +183,7 @@ \or \global\Etoc@vtrue \else + \ifnum#1=\m@ne \global\Etoc@vfalse \global\Etoc@ivfalse \global\Etoc@iiifalse @@ -179,6 +191,16 @@ \global\Etoc@ifalse \global\Etoc@false \global\Etoc@jtrue + \else + \global\Etoc@vfalse + \global\Etoc@ivfalse + \global\Etoc@iiifalse + \global\Etoc@iifalse + \global\Etoc@ifalse + \global\Etoc@false + \global\Etoc@jfalse + \global\Etoc@jjtrue + \fi \fi} \def\Etoc@etoccontentsline#1{% \global\expandafter\let\expandafter\Etoc@tmp\csname Etoc@#1@@\endcsname @@ -247,6 +269,7 @@ \gdef\Etoc@contents{\Etoc@contents@five}% \gdef\Etoc@prefix{\Etoc@prefix@five}% \else + \ifnum\Etoc@tmp=\m@ne \ifEtoc@v \Etoc@end@five\fi \ifEtoc@iv \Etoc@end@four\fi \ifEtoc@iii \Etoc@end@three\fi @@ -257,6 +280,18 @@ \global\Etoc@parttrue \gdef\Etoc@contents{\Etoc@contents@minusone}% \gdef\Etoc@prefix{\Etoc@prefix@minusone}% + \else + \ifEtoc@v \Etoc@end@five\fi + \ifEtoc@iv \Etoc@end@four\fi + \ifEtoc@iii \Etoc@end@three\fi + \ifEtoc@ii \Etoc@end@two\fi + \ifEtoc@i \Etoc@end@one\fi + \ifEtoc@ \Etoc@end@zero\fi + \ifEtoc@j \Etoc@end@minusone\fi + \ifEtoc@jj \else \def\Etoc@next{\Etoc@begin@minustwo}\fi + \gdef\Etoc@contents{\Etoc@contents@minustwo}% + \gdef\Etoc@prefix{\Etoc@prefix@minustwo}% + \fi \fi \Etoc@setflags{\Etoc@tmp}% \fi\fi @@ -298,7 +333,7 @@ \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}% + \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}% @@ -329,7 +364,6 @@ \def\Etoc@starttoc{% \begingroup \makeatletter -\chardef\ET@endline\endlinechar \@ifpackageloaded{hyperref} {\ifx\hyper@last\@undefined \ltx@ifpackageloaded {parskip}{\parskip \z@ }{}% @@ -343,10 +377,9 @@ \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} +\@nobreakfalse \endgroup} \AtBeginDocument{\Etoc@starttoc} \def\Etoc@toctoc{% \global\Etoc@vfalse @@ -356,17 +389,22 @@ \global\Etoc@ifalse \global\Etoc@false \global\Etoc@jfalse + \global\Etoc@jjfalse \ifEtoc@standard \Etoc@Lazarus -\etocsetstyle{@minusone}{}{}{}{}% -\etocsetstyle{@zero}{}{}{}{}% -\etocsetstyle{@one}{}{}{}{}% -\etocsetstyle{@two}{}{}{}{}% -\etocsetstyle{@three}{}{}{}{}% -\etocsetstyle{@four}{}{}{}{}% -\etocsetstyle{@five}{}{}{}{}% +\etoc@setstyle{@minustwo}{}{}{}{}% +\etoc@setstyle{@minusone}{}{}{}{}% +\etoc@setstyle{@zero}{}{}{}{}% +\etoc@setstyle{@one}{}{}{}{}% +\etoc@setstyle{@two}{}{}{}{}% +\etoc@setstyle{@three}{}{}{}{}% +\etoc@setstyle{@four}{}{}{}{}% +\etoc@setstyle{@five}{}{}{}{}% \else \let\numberline\@gobble +\let\booknumberline\numberline +\let\partnumberline\numberline +\let\chapternumberline\numberline \fi \the\Etoc@toctoks \ifEtoc@notactive\else @@ -377,12 +415,14 @@ \ifEtoc@i \Etoc@end@one\fi \ifEtoc@ \Etoc@end@zero\fi \ifEtoc@j \Etoc@end@minusone\fi + \ifEtoc@jj \Etoc@end@minustwo\fi \fi} \def\etoc@@startlocaltoc#1#2{% \let\Etoc@next\relax \ifEtoc@localtoc \ifEtoc@notactive \ifnum #1=#2\relax + \ifEtoc@jj \global\let\Etoc@localtop\Etoc@@minusone@@ \fi \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 @@ -397,18 +437,12 @@ \global\Etoc@iifalse \global\Etoc@ifalse \global\Etoc@false - \global\Etoc@jfalse}% + \global\Etoc@jfalse + \global\Etoc@jjfalse}% \fi \fi\fi \Etoc@next} \def\etoc@startlocaltoc#1{\etoc@@startlocaltoc{#1}{\c@etoc@tocid}} -\def\Etoc@getrefno #1#2\etoc@{#1} -\def\Etoc@getref #1{\@ifundefined{r@#1}{0}{\expandafter\expandafter\expandafter - \Etoc@getrefno\csname r@#1\endcsname\relax\etoc@}} -\def\Etoc@ref#1{\Etoc@localtableofcontents{\Etoc@getref{#1}}} -\def\Etoc@label#1{\label{#1}\futurelet\Etoc@nexttoken\Etoc@t@bleofcontents} -{\def\1{\Etoc@again}\expandafter -\gdef\1 {\futurelet\Etoc@nexttoken\Etoc@t@bleofcontents}} \long\def\Etoc@localtableofcontents#1{% \edef\Etoc@tmp{#1}% \ifnum\Etoc@tmp<\@ne @@ -421,18 +455,27 @@ \edef\etoc@startlocaltoc##1{% \noexpand\etoc@@startlocaltoc{##1}{#1}} \Etoc@localtoctrue - \let\Etoc@localtop\m@ne - \Etoc@stoptocfalse + \let\Etoc@localtop\Etoc@@minustwo@@ + \global\Etoc@stoptocfalse \global\Etoc@notactivetrue \Etoc@tableofcontents \endgroup}% \ifEtoc@mustclosegroup\expandafter\endgroup\fi} +\def\Etoc@getrefno #1#2\etoc@{#1} +\def\Etoc@getref #1{\@ifundefined{r@#1}{0}{\expandafter\expandafter\expandafter + \Etoc@getrefno\csname r@#1\endcsname\relax\etoc@}} +\def\Etoc@ref#1{\Etoc@localtableofcontents{\Etoc@getref{#1}}} +\def\Etoc@label#1{\label{#1}\ifEtoc@tocwithid\else\addtocontents{toc} + {\string\etoc@startlocaltoc\string{\arabic{etoc@tocid}\string}}\fi + \futurelet\Etoc@nexttoken\Etoc@t@bleofcontents} +{\def\1{\Etoc@again}\expandafter +\gdef\1 {\futurelet\Etoc@nexttoken\Etoc@t@bleofcontents}} \def\Etoc@t@bleofcontents{% \ifx\Etoc@nexttoken\label \def\Etoc@next{\expandafter\Etoc@label\@gobble}\else \ifx\Etoc@nexttoken\@sptoken \let\Etoc@next\Etoc@again\else - \ifEtoc@star + \ifEtoc@tocwithid \def\Etoc@next{\Etoc@localtableofcontents{\c@etoc@tocid}}% \else \ifx\Etoc@nexttoken\ref @@ -445,20 +488,30 @@ \endgroup}% \fi \fi\fi\fi\Etoc@next} -\def\tableofcontents{\par - \refstepcounter{etoc@tocid}% - \@ifstar {\addtocontents{toc} - {\string\etoc@startlocaltoc\string{\arabic{etoc@tocid}\string}}% - \Etoc@startrue - \futurelet\Etoc@nexttoken\Etoc@t@bleofcontents} - {\Etoc@starfalse - \futurelet\Etoc@nexttoken\Etoc@t@bleofcontents}} +\newcommand\etocaftertitlehook{} +\def\table@fcontents{\par + \refstepcounter{etoc@tocid}% + \Etoc@tocwithidfalse + \futurelet\Etoc@nexttoken\Etoc@t@bleofcontents} +\def\localtable@fcontents{\par + \refstepcounter{etoc@tocid}% + \addtocontents{toc} + {\string\etoc@startlocaltoc\string{\arabic{etoc@tocid}\string}}% + \Etoc@tocwithidtrue + \futurelet\Etoc@nexttoken\Etoc@t@bleofcontents} +\def\tableofcontents{\@ifstar + {\let\Etoc@aftertitlehook\relax\table@fcontents} + {\let\Etoc@aftertitlehook\etocaftertitlehook\table@fcontents}} +\def\localtableofcontents{\@ifstar + {\let\Etoc@aftertitlehook\relax\localtable@fcontents} + {\let\Etoc@aftertitlehook\etocaftertitlehook\localtable@fcontents}} \newcommand\etocsettocstyle[2]{% \long\def\Etoc@tableofcontents -{\ifnum\c@tocdepth>-2\let\Etoc@@next\@firstofone\else +{\ifnum\c@tocdepth>\Etoc@minf\let\Etoc@@next\@firstofone\else \let\Etoc@@next\@gobble\fi -\Etoc@@next{#1\Etoc@toctoc\let\Etoc@n@xt\relax - \ifEtoc@star\else +\Etoc@@next{#1\Etoc@aftertitlehook + \Etoc@toctoc\let\Etoc@n@xt\relax + \ifEtoc@tocwithid\else \ifEtoc@localtoc \ifEtoc@notactive \def\Etoc@n@xt{\Etoc@localtocfalse @@ -466,7 +519,12 @@ \Etoc@toctoc}% \fi\fi\fi\Etoc@n@xt #2}}} -\newcommand\etocsetstyle[5]{% +\newcommand\etocextendtocstyle[2]{% +\toks0=\expandafter{\Etoc@tableofcontents #2}% +\toks2={#1}% +\long\edef\Etoc@tableofcontents{\the\toks2 \the\toks0}} +\newcommand\etocsetstyle{\Etoc@standardfalse\etoc@setstyle} +\long\def\etoc@setstyle#1#2#3#4#5{% \long\expandafter\def \csname Etoc@begin@\csname Etoc@#1@\endcsname\endcsname {#2}% \long\expandafter\def @@ -475,43 +533,62 @@ \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\etocfontminustwo{\normalfont \LARGE \bfseries} \newcommand\etocfontminusone{\normalfont \large \bfseries} -\newcommand\etocfontzero{\normalfont \normalsize \bfseries} +\newcommand\etocfontzero{\normalfont \large \bfseries} \newcommand\etocfontone{\normalfont \normalsize \bfseries} \newcommand\etocfonttwo{\normalfont \normalsize} \newcommand\etocfontthree{\normalfont \footnotesize} \newcommand\etocfontfour{\normalfont \footnotesize} \newcommand\etocfontfive{\normalfont \footnotesize} +\newcommand\etocsepminustwo{4ex \@plus .5ex \@minus .5ex} \newcommand\etocsepminusone{4ex \@plus .5ex \@minus .5ex} \newcommand\etocsepzero{2.5ex \@plus .4ex \@minus .4ex} \newcommand\etocsepone{1.5ex \@plus .3ex \@minus .3ex} \newcommand\etocseptwo{1ex \@plus .15ex \@minus .15ex} \newcommand\etocsepthree{.25ex \@plus .05ex \@minus .05ex} +\newcommand\etocbaselinespreadminustwo{1} \newcommand\etocbaselinespreadminusone{1} \newcommand\etocbaselinespreadzero{1} \newcommand\etocbaselinespreadone{1} \newcommand\etocbaselinespreadtwo{1} \newcommand\etocbaselinespreadthree{.9} -\newcommand\etocminusonelrmargins{1em} +\newcommand\etocminustwoleftmargin{1.5em plus 0.5fil} +\newcommand\etocminustworightmargin{1.5em plus -0.5fil} +\newcommand\etocminusoneleftmargin{1em} +\newcommand\etocminusonerightmargin{1em} \newcommand\etoctoclineleaders -{\hbox{\normalfont\normalsize\hbox to 2ex {\hss.\hss}}} + {\hbox{\normalfont\normalsize\hb@xt@2ex {\hss.\hss}}} \newcommand\etocabbrevpagename{p.~} -\def\etocetoclines{\Etoc@standardfalse -\etocsetstyle{@minusone}{\addpenalty\@highpenalty}{} +\newcommand\etocpartname{\partname} +\newcommand\etocbookname{Book} +\def\etoctoclines{\Etoc@standardfalse +\etoc@setstyle{@minustwo}{\etocskipfirstprefix}{\pagebreak[3]} +{\begingroup \etocfontminustwo + \addvspace{\etocsepminustwo}% + \parindent \z@ + \leftskip \etocminustwoleftmargin + \rightskip \etocminustworightmargin + \parfillskip \@flushglue + \vbox{\etocifnumbered{\etocbookname~\etocnumber:~}{}\etocname + \baselineskip\etocbaselinespreadminustwo\baselineskip\par}% + \addvspace{\etocsepminusone}\nobreak +\endgroup} +{}% +\etoc@setstyle{@minusone}{\etocskipfirstprefix}{\pagebreak[3]} {\begingroup \etocfontminusone \addvspace{\etocsepminusone}% \parindent \z@ - \leftskip \etocminusonelrmargins - \rightskip \etocminusonelrmargins + \leftskip \etocminusoneleftmargin + \rightskip \etocminusonerightmargin \parfillskip \@flushglue - \vbox{\etocifnumbered{\etocnumber.~}{}\etocname + \vbox{\etocpartname\etocifnumbered{ \etocnumber.~}{ }\etocname \baselineskip\etocbaselinespreadminusone\baselineskip\par}% \addvspace{\etocsepzero}\nobreak \endgroup} -{\addpenalty\@secpenalty}% -\etocsetstyle{@zero} -{\addpenalty\@highpenalty}{} +{}% +\etoc@setstyle{@zero} +{\addpenalty\@highpenalty\etocskipfirstprefix}{\pagebreak[2]} {\begingroup \etocfontzero \addvspace{\etocsepzero}% @@ -521,9 +598,8 @@ \addvspace{\etocsepone}\addpenalty\@itempenalty \endgroup} {\addpenalty\@secpenalty}% -\etocsetstyle{@one} -{\addpenalty\@medpenalty} -{} +\etoc@setstyle{@one} +{\addpenalty\@medpenalty\etocskipfirstprefix}{\pagebreak[1]} {\begingroup\etocfontone \addvspace{\etocsepone}% \parindent \z@ \parfillskip \z@ @@ -534,8 +610,8 @@ \setbox\z@=\etoctoclineleaders \advance\dimen\z@\wd\z@ \etocifnumbered -{\setbox\tw@\hbox{\etocfonttwo\etocnumber, \etocabbrevpagename\etocpage}} -{\setbox\tw@\hbox{\etocfonttwo\etocabbrevpagename\etocpage}}% +{\setbox\tw@\hbox{\etocnumber, \etocabbrevpagename\etocpage}} +{\setbox\tw@\hbox{\etocabbrevpagename\etocpage}}% \advance\dimen\z@\wd\tw@ \ifdim\dimen\z@ < \linewidth \vbox{\etocname\nobreak @@ -550,9 +626,9 @@ \addvspace{\etocseptwo}\addpenalty\@itempenalty \endgroup} {\addpenalty\@secpenalty}% -\etocsetstyle{@two} -{\addpenalty\@medpenalty} -{} +\etoc@setstyle{@two} +{\addpenalty\@medpenalty\etocskipfirstprefix} +{\pagebreak[1]} {\begingroup\etocfonttwo \addvspace{\etocseptwo}% \parindent \z@ \parfillskip \z@ @@ -579,51 +655,29 @@ \addvspace{\etocsepthree}\addpenalty\@itempenalty \endgroup} {\addpenalty\@secpenalty}% -\etocsetstyle{@three} -{\nobreak +\etoc@setstyle{@three} +{\nopagebreak \etocfontthree \addvspace{\etocsepthree}% \nointerlineskip\noindent \etocskipfirstprefix} {\allowbreak\,--\,} -{\etocname} -{\unskip.\hfil\begingroup +{\etocname\unskip} % \xspace in \etocname +{.\hfil\begingroup \baselineskip\etocbaselinespreadthree\baselineskip \par\endgroup \addpenalty{-\@highpenalty}}% -\etocsetstyle{@four}{}{}{}{}% -\etocsetstyle{@five}{}{}{}{}% +\etoc@setstyle{@four}{}{}{}{}% +\etoc@setstyle{@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]{% +\newcommand\etocdefaultnbcol{2} +\newcommand\etocmulticolstyle[2][\etocdefaultnbcol]{% \etocsettocstyle {\addvspace{\etocabovetocskip}% \ifnum #1>\@ne\let\Etoc@next\@firstoftwo @@ -634,8 +688,9 @@ \setlength{\columnsep}{\etoccolumnsep}% \setlength{\multicolsep}{\etocmulticolsep}% \begin{multicols}{#1}[#2\addvspace{\etocsepminusone}]} - {#2\addvspace{\etocsepminusone}\pretolerance\etocmulticolpretolerance - \tolerance\etocmulticoltolerance}} + {#2\addvspace{\etocsepminusone}% + \pretolerance\etocmulticolpretolerance + \tolerance\etocmulticoltolerance}} {\ifnum #1>\@ne\let\Etoc@next\@firstofone \else \let\Etoc@next\@gobble\fi \Etoc@next{\end{multicols}}% @@ -653,13 +708,13 @@ \newcommand\etocleftrulecolorcmd{\relax} \newcommand\etocrightrulecolorcmd{\relax} \newcommand\etoc@ruledheading[1]{% - \hbox to \linewidth{\color@begingroup + \hb@xt@\linewidth{\color@begingroup \hss #1\hss\hskip-\linewidth \etoctoprulecolorcmd\leaders\etoctoprule\hfil \phantom{#1}% \leaders\etoctoprule\hss\color@endgroup}% \nointerlineskip\vskip\etocinnertopsep} -\newcommand\etocruledstyle[2][2]{% +\newcommand\etocruledstyle[2][\etocdefaultnbcol]{% \etocsettocstyle {\addvspace{\etocabovetocskip}% \ifnum #1>\@ne\let\Etoc@next\@firstoftwo @@ -682,13 +737,13 @@ \newcommand\Etoc@relax{\relax} \newbox\etoc@framed@titlebox \newbox\etoc@framed@contentsbox -\newcommand\etocframedstyle[2][2]{% +\newcommand\etocframedstyle[2][\etocdefaultnbcol]{% \etocsettocstyle{% \addvspace{\etocabovetocskip}% - \setbox\z@\hbox{#2}% + \sbox\z@{#2}% \dimen\z@\dp\z@ \ifdim\wd\z@<\linewidth \dp\z@\z@ \else \dimen\z@\z@ \fi - \setbox\etoc@framed@titlebox=\hbox to \linewidth{\color@begingroup + \setbox\etoc@framed@titlebox=\hb@xt@\linewidth{\color@begingroup \hss \ifx\etocbkgcolorcmd\Etoc@relax\else \sbox\tw@{\color{white}% @@ -727,14 +782,15 @@ {\ifnum #1>\@ne\let\Etoc@next\@firstofone \else \let\Etoc@next\@gobble\fi \Etoc@next{\end{multicols}\unskip}% - \end{minipage}%<- indispensable (horizontal mode here) + \end{minipage}% \egroup \vskip\etocinnerbottomsep \egroup + \vbox{\hsize\linewidth \ifx\etocbkgcolorcmd\Etoc@relax\else - \vskip\ht\etoc@framed@titlebox - \vskip\dp\etoc@framed@titlebox - \hbox to \linewidth{\color@begingroup + \kern\ht\etoc@framed@titlebox + \kern\dp\etoc@framed@titlebox + \hb@xt@\linewidth{\color@begingroup \etocleftrulecolorcmd\etocleftrule \etocbkgcolorcmd \leaders\vrule @@ -750,54 +806,190 @@ \vskip-\ht\etoc@framed@titlebox \fi \box\etoc@framed@titlebox\nointerlineskip - \hbox to \linewidth{\color@begingroup + \hb@xt@\linewidth{\color@begingroup {\etocleftrulecolorcmd\etocleftrule}% \hss\box\etoc@framed@contentsbox\hss \etocrightrulecolorcmd\etocrightrule\color@endgroup} \nointerlineskip \vskip\ht\etoc@framed@contentsbox \vskip\dp\etoc@framed@contentsbox - \hbox to \linewidth{\color@begingroup\etocbottomrulecolorcmd - \leaders\etocbottomrule\hss\color@endgroup} + \hb@xt@\linewidth{\color@begingroup\etocbottomrulecolorcmd + \leaders\etocbottomrule\hss\color@endgroup}} \addvspace{\etocbelowtocskip}}} -\newcommand\etoc@multicoltoc[2][2]{% -\begingroup +\newcommand\etoc@multicoltoc[2][\etocdefaultnbcol]{% \etocmulticolstyle[#1]{#2}% - \ifEtoc@star - \def\Etoc@next{\tableofcontents*}% - \else - \def\Etoc@next{\tableofcontents}% - \fi -\Etoc@mustclosegrouptrue -\Etoc@next} -\newcommand\etoc@ruledtoc[2][2]{% -\begingroup +\tableofcontents} +\newcommand\etoc@multicoltoci[2][\etocdefaultnbcol]{% +\etocmulticolstyle[#1]{#2}% +\tableofcontents*} +\newcommand\etoc@local@multicoltoc[2][\etocdefaultnbcol]{% +\etocmulticolstyle[#1]{#2}% +\localtableofcontents} +\newcommand\etoc@local@multicoltoci[2][\etocdefaultnbcol]{% +\etocmulticolstyle[#1]{#2}% +\localtableofcontents*} +\newcommand\etoc@ruledtoc[2][\etocdefaultnbcol]{% \etocruledstyle[#1]{#2}% - \ifEtoc@star - \def\Etoc@next{\tableofcontents*}% - \else - \def\Etoc@next{\tableofcontents}% - \fi -\Etoc@mustclosegrouptrue -\Etoc@next} -\newcommand\etoc@framedtoc[2][2]{% -\begingroup +\tableofcontents} +\newcommand\etoc@ruledtoci[2][\etocdefaultnbcol]{% +\etocruledstyle[#1]{#2}% +\tableofcontents*} +\newcommand\etoc@local@ruledtoc[2][\etocdefaultnbcol]{% +\etocruledstyle[#1]{#2}% +\localtableofcontents} +\newcommand\etoc@local@ruledtoci[2][\etocdefaultnbcol]{% +\etocruledstyle[#1]{#2}% +\localtableofcontents*} +\newcommand\etoc@framedtoc[2][\etocdefaultnbcol]{% \etocframedstyle[#1]{#2}% - \ifEtoc@star - \def\Etoc@next{\tableofcontents*}% - \else - \def\Etoc@next{\tableofcontents}% - \fi -\Etoc@mustclosegrouptrue -\Etoc@next} -\def\etocmulticol{\@ifstar{\Etoc@startrue\etoc@multicoltoc} -{\Etoc@starfalse\etoc@multicoltoc}} -\def\etocruled{\@ifstar{\Etoc@startrue\etoc@ruledtoc} -{\Etoc@starfalse\etoc@ruledtoc}} -\def\etocframed{\@ifstar{\Etoc@startrue\etoc@framedtoc} -{\Etoc@starfalse\etoc@framedtoc}} -\etocetoclines -\etocmulticolstyle{\etocstandardheading\contentsname} +\tableofcontents} +\newcommand\etoc@framedtoci[2][\etocdefaultnbcol]{% +\etocframedstyle[#1]{#2}% +\tableofcontents*} +\newcommand\etoc@local@framedtoc[2][\etocdefaultnbcol]{% +\etocframedstyle[#1]{#2}% +\localtableofcontents} +\newcommand\etoc@local@framedtoci[2][\etocdefaultnbcol]{% +\etocframedstyle[#1]{#2}% +\localtableofcontents*} +\newcommand\etocmulticol{\begingroup + \Etoc@mustclosegrouptrue + \@ifstar + {\etoc@multicoltoci} + {\etoc@multicoltoc}} +\newcommand\etocruled{\begingroup + \Etoc@mustclosegrouptrue + \@ifstar + {\etoc@ruledtoci} + {\etoc@ruledtoc}} +\newcommand\etocframed{\begingroup + \Etoc@mustclosegrouptrue + \@ifstar + {\etoc@framedtoci} + {\etoc@framedtoc}} +\newcommand\localetocmulticol{\begingroup + \Etoc@mustclosegrouptrue + \@ifstar + {\etoc@local@multicoltoci} + {\etoc@local@multicoltoc}} +\newcommand\localetocruled{\begingroup + \Etoc@mustclosegrouptrue + \@ifstar + {\etoc@local@ruledtoci} + {\etoc@local@ruledtoc}} +\newcommand\localetocframed{\begingroup + \Etoc@mustclosegrouptrue + \@ifstar + {\etoc@local@framedtoci} + {\etoc@local@framedtoc}} +\newcommand\etocarticlestyle{% + \etocsettocstyle + {\section *{\contentsname + \@mkboth {\MakeUppercase \contentsname} + {\MakeUppercase \contentsname}}} + {}} +\newcommand\etocarticlestylenomarks{% + \etocsettocstyle + {\section *{\contentsname}} + {}} +\newcommand\etocbookstyle{% + \etocsettocstyle + {\if@twocolumn \@restonecoltrue \onecolumn \else \@restonecolfalse \fi + \chapter *{\contentsname + \@mkboth {\MakeUppercase \contentsname} + {\MakeUppercase \contentsname}}} + {\if@restonecol \twocolumn \fi}} +\newcommand\etocbookstylenomarks{% + \etocsettocstyle + {\if@twocolumn \@restonecoltrue \onecolumn \else \@restonecolfalse \fi + \chapter *{\contentsname}} + {\if@restonecol \twocolumn \fi}} +\let\etocreportstyle\etocbookstyle +\let\etocreportstylenomarks\etocbookstylenomarks +\newcommand\etocmemoirtoctotocfmt[2]{% + \renewcommand\etocaftertitlehook{\ifmem@em@starred@listof \else + \phantomsection \addcontentsline {toc}{#1}{#2}\fi}} +\newcommand\etocmemoirstyle{% + \etocsettocstyle + {\ensureonecol \par \begingroup \@nameuse {@tocmaketitle} + \Etoc@aftertitlehook\let\Etoc@aftertitlehook\relax + \parskip \cftparskip \@nameuse {cfttocbeforelisthook}} + {\@nameuse {cfttocafterlisthook}\endgroup \restorefromonecol}} +\newcommand\etocscrartclstyle{% + \etocsettocstyle + {\let\if@dynlist\if@tocleft + \iftocfeature {toc}{onecolumn} + {\iftocfeature {toc}{leveldown} + {} + {\if@twocolumn \aftergroup \twocolumn \onecolumn \fi }} + {}% + \tocbasic@listhead {\listoftocname}% + \begingroup \expandafter \expandafter \expandafter + \endgroup \expandafter + \ifx + \csname microtypesetup\endcsname \relax + \else + \iftocfeature {toc}{noprotrusion}{} + {\microtypesetup {protrusion=false}% + \PackageInfo {tocbasic}% + {character protrusion at toc deactivated}}% + \fi + \setlength {\parskip }{\z@ }% + \setlength {\parindent }{\z@ }% + \setlength {\parfillskip }{\z@ \@plus 1fil}% + \csname tocbasic@@before@hook\endcsname + \csname tb@toc@before@hook\endcsname} + {\csname tb@toc@after@hook\endcsname + \csname tocbasic@@after@hook\endcsname}} +\let\etocscrbookstyle\etocscrartclstyle +\let\etocscrreprtstyle\etocscrartclstyle +\newcommand\etocnakedtocdisplaystyle{\etocsettocstyle{}{}} +\newcommand\etocstandarddisplaystyle{\etocarticlestyle} +\newcommand\etocmarkboth[1]{% + \@mkboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}} +\newcommand\etocmarkbothnouc[1]{\@mkboth{#1}{#1}} +\newcommand\etoctocstyle[3][section]{\etocmulticolstyle[#2]% + {\csname #1\endcsname *{#3}}} +\newcommand\etoctocstylewithmarks[4][section]{\etocmulticolstyle[#2]% + {\csname #1\endcsname *{#3\etocmarkboth{#4}}}} +\newcommand\etoctocstylewithmarksnouc[4][section]{\etocmulticolstyle[#2]% + {\csname #1\endcsname *{#3\etocmarkbothnouc{#4}}}} +\def\Etoc@redefetocstyle#1{% + \renewcommand\etoctocstylewithmarks[4][#1] + {\etocmulticolstyle[##2]% + {\csname ##1\endcsname *{##3\etocmarkboth{##4}}}} + \renewcommand\etoctocstylewithmarksnouc[4][#1] + {\etocmulticolstyle[##2]% + {\csname ##1\endcsname *{##3\etocmarkbothnouc{##4}}}} + \renewcommand\etoctocstyle[3][#1]{% + \etocmulticolstyle[##2]{\csname ##1\endcsname *{##3}}}} +\@ifclassloaded{scrartcl} + {\renewcommand\etocstandarddisplaystyle{\etocscrartclstyle}}{} +\@ifclassloaded{book} + {\renewcommand\etocfontone{\normalfont\normalsize} + \renewcommand\etocstandarddisplaystyle{\etocbookstyle} + \Etoc@redefetocstyle{chapter}}{} +\@ifclassloaded{report} + {\renewcommand\etocfontone{\normalfont\normalsize} + \renewcommand\etocstandarddisplaystyle{\etocreportstyle} + \Etoc@redefetocstyle{chapter}}{} +\@ifclassloaded{scrbook} + {\renewcommand\etocfontone{\normalfont\normalsize} + \renewcommand\etocstandarddisplaystyle{\etocscrbookstyle} + \Etoc@redefetocstyle{chapter}}{} +\@ifclassloaded{scrreprt} + {\renewcommand\etocfontone{\normalfont\normalsize} + \renewcommand\etocstandarddisplaystyle{\etocscrreprtstyle} + \Etoc@redefetocstyle{chapter}}{} +\@ifclassloaded{memoir} + {\renewcommand\etocfontone{\normalfont\normalsize} + \etocmemoirtoctotocfmt{chapter}{\contentsname}% + \renewcommand\etocstandarddisplaystyle{\etocmemoirstyle} + \Etoc@redefetocstyle{chapter}}{} +\newcommand\etocstandardlines{\Etoc@standardtrue} +\etoctoclines +\etocstandardlines +\etocstandarddisplaystyle \endinput %% %% End of file `etoc.sty'. -- cgit v1.2.3