From dfa401eaa72183dde77ddd8e40d6893483a5260f Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Fri, 13 Jan 2006 00:09:20 +0000
Subject: titlesec

git-svn-id: svn://tug.org/texlive/trunk@1393 c570f23f-e606-0410-a88d-b1316a301751
---
 Master/texmf-dist/tex/latex/titlesec/titletoc.sty | 629 ++++++++++++++++++++++
 1 file changed, 629 insertions(+)
 create mode 100644 Master/texmf-dist/tex/latex/titlesec/titletoc.sty

(limited to 'Master/texmf-dist/tex/latex/titlesec/titletoc.sty')

diff --git a/Master/texmf-dist/tex/latex/titlesec/titletoc.sty b/Master/texmf-dist/tex/latex/titlesec/titletoc.sty
new file mode 100644
index 00000000000..8f01805fc50
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/titlesec/titletoc.sty
@@ -0,0 +1,629 @@
+% +---------------------------------------------+
+% | Documentation is in the titlesec.tex file.  |
+% +---------------------------------------------+
+%
+% Copyright (c) 1998-2005 by Javier Bezos.
+% All Rights Reserved.
+%
+% This file is part of the titlesec distribution release 2.6
+% -----------------------------------------------------------
+%
+% This program can be redistributed and/or modified under the terms
+% of the LaTeX Project Public License Distributed from CTAN
+% archives in directory macros/latex/base/lppl.txt; either
+% version 1 of the License, or any later version.
+
+% History of v1.1
+% ~~~~~~~~~~~~~~~
+% 99/04/22: A bug fix. Some missing global assignments in \ttl@tocentry
+%           were missing, and page numbers messed up with 
+%           \titlecontents*
+% 
+% History of v1.2
+% ~~~~~~~~~~~~~~~~
+% 99/10/20: Added \contentsafter. \ttl@tocentry modified to accept
+%           the new command for grouping in a paragraph entries of
+%           different levels.
+% 99/10/27: Instead of defining the level numbers explicitly, that's
+%           done with \ttl@setlevels and \ttl@levels.
+% 99/10/27: Added the basic code for multiple indexes.
+% 99/10/29: Added the toctop test to the \ttl@savel@... commands.
+% 99/12/28: Simplified \ttl@savel@... with \ttl@lselect.
+% 00/01/12: \contentsafter rejected. An aditional optional parameter
+%           is used instead. (Too) many thing had to be rewritten.
+% 00/01/27: Removed \ttl@setlevels. Any change of levels are
+%           best done with titlesec.
+% 00/02/14: Moved misplaced \vskip in ttl@tocentry.
+% 00/02/16: A few changes in the "block" separators.
+% 00/02/16: Fixed bug in \ttl@margin. For the right margin the
+%           correction was used instead of the margin.
+%
+% History of v1.2.1
+% ~~~~~~~~~~~~~~~~~
+% 00/04/25: Dirty trick to make sure that \ttl@finish is the very
+%           last thing in lists of floats (lof, lot, etc.).
+% 00/05/14: Missing \global before \ttl@labelfalse added.
+% 
+% History of 1.2.2
+% ~~~~~~~~~~~~~~~~
+% 00/06/05: The optional argument no longer mandatory, but
+%           still reporting an error if the length is missing.
+%           Minor internal changes, and a patch mechanism added.
+%
+% History of 1.3
+% ~~~~~~~~~~~~~~
+% 01/01/12: Minor changes and some missing \globals added for
+%           partial tocs to work inside a group.
+% 01/01/21: Added \dottedcontents.
+% 
+% History of 1.4
+% ~~~~~~~~~~~~~~
+% 02/03/27: titletoc.new merged into this file
+% 02/03/27: \ttl@finish written by the last \newpage. 
+% 02/03/27: \ttl@lsection broke paragraphs always. Now
+%           only if the sublevel is typeset.
+% 02/03/27: \ttl@finish -> \contentsfinish
+%
+% History of 1.5
+% ~~~~~~~~~~~~~~
+% 03/06/14: \contentspush didn't work because of the change of
+% (.new)    \leftskip  was done inside a group before the
+%           corresponding \par 
+% 03/06/14: Added an useful error if a partial TOC is not
+% (.new)    defined.
+% 05/01/17: New options rubber/rigidseps, to remove if desired
+%           the small vertical "plus" between entries.
+% 05/01/20: Begin work on partial lists.
+% 05/01/21: \ttl@outblock and \ttl@outnoblock just to avoid a
+%           huge definition and to ease patching.
+% 05/01/22: Work on partial lists finished (but to be resumed).
+
+\ProvidesPackage{titletoc}[2005/01/22 v1.5 TOC entries]
+
+% The following tags are used:
+% ttl@  : the generic one, shared with titlesec
+% ttlb@ : starting punctuation for block format
+% ttlm@ : and middle
+% ttle@ : and ending
+% ttll@ : section level
+% ttlx@ : file extension
+% 
+% Fistly, comes the
+% common stuff with titlesec
+% ~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+\newif\ifttl@label
+\newif\ifttl@fromblock
+
+\providecommand\titleline{%
+  \@ifstar{\ttl@line@i{\hb@xt@\titlewidth}}%
+          {\ttl@line@i{}}}
+
+\def\ttl@line@i#1{%
+  \@ifnextchar[{\ttl@line{#1}}{\ttl@line{#1}[s]}}
+
+\def\ttl@line#1[#2]#3{%
+  \vskip\topskip
+  \hrule \@height \z@
+  \nobreak
+  \vskip-\topskip
+  \begingroup
+    \parindent\z@
+    \everypar{}%
+    \leftskip\z@
+    \rightskip\z@   %  #1 is either \hb@xt@\titlewidth or empty:
+    \@makebox[\hsize][#2]{\ttl@makeline{#1{#3}}}%
+    \par
+  \endgroup
+  \hrule height \z@
+  \nobreak}
+
+% Fillers:
+
+\providecommand\titlerule{\@ifstar{\ttl@row}{\ttl@rule}}
+
+\let\ttl@leaders\xleaders
+
+\def\ttl@row{\@ifnextchar[{\ttl@row@i}{\ttl@row@i[\wd\z@]}}
+\def\ttl@row@i[#1]#2{%
+  \ifvmode\expandafter\titleline\fi
+  {\sbox\z@{#2}%
+   \hspace{-#1}%
+   \hskip\wd\z@
+   \ttl@leaders\hb@xt@#1{\hss\box\z@}%
+   \hfill\kern\z@}}
+
+\def\ttl@rule{\@ifnextchar[{\ttl@rule@i}{\ttl@rule@i[.4pt]}}
+\def\ttl@rule@i[#1]{%
+  \ifvmode\expandafter\titleline\fi
+  {\leaders\hrule height #1\hfill\kern\z@}}
+
+\providecommand\filright{%
+  \gdef\ttl@filleft##1{\hskip##1}%
+  \gdef\ttl@filright##1{\hfill}%
+  \let\\\@centercr
+  \advance\rightskip\z@ \@plus 1fil\relax}
+\providecommand\filleft{%
+  \gdef\ttl@filleft##1{\hfill}%
+  \gdef\ttl@filright##1{\hskip##1}%
+  \let\\\@centercr
+  \advance\leftskip\z@ \@plus 1fil
+  \parfillskip\z@}
+\providecommand\filcenter{\filleft\filright
+  \gdef\ttl@filleft##1{\hfill}}
+\providecommand\fillast{%
+  \gdef\ttl@filleft##1{\hfill}%
+  \gdef\ttl@filright##1{\hfill}%
+  \let\\\@centercr
+  \filleft\advance\rightskip\z@ \@plus -1fil
+  \parfillskip\z@ \@plus 2fil\relax}
+  
+% Now, the specific titletoc part
+
+% User interface
+% ~~~~~~~~~~~~~~
+% Tools:
+
+\DeclareOption{dotinlabels}{\def\ttl@idot{.}}
+\DeclareOption{nodotinlabels}{\let\ttl@idot\@empty}
+
+\DeclareOption{rigidseps}{%
+  \def\ttl@contentsstretch{\vskip\z@}}
+\DeclareOption{rubberseps}{%
+  \def\ttl@contentsstretch{\vskip\z@\@plus.1\p@}}
+
+\DeclareOption{leftlabels}{%
+  \renewcommand\numberline[1]{\hb@xt@\@tempdima{#1\ttl@idot\hfil}}%
+  \newcommand\contentslabel[2][\thecontentslabel\ttl@idot]{%
+%   \let\ttl@a\thecontentslabel   %%%%% For the star variant
+%   \def\thecontentslabel{#2}%    %%% To be fully implemented... when?
+%   \setbox\z@\hbox{#1}%
+%   \dimen@\wd\z@
+%   \let\thecontentslabel\ttl@a
+%   \hspace*{-\dimen@}\hb@xt@\dimen@{#1\hfil}
+    \hspace*{-#2}\hb@xt@#2{#1\hfil}}}
+
+\DeclareOption{rightlabels}{%
+  \renewcommand\numberline[1]{\hb@xt@\@tempdima{\hss#1\ttl@idot\enspace}}%
+  \let\contentslabel\relax
+  \newcommand\contentslabel[2][\thecontentslabel\ttl@idot\enspace]{%
+    \hspace*{-#2}\hb@xt@#2{\hfil#1}}}
+
+\newcommand\contentspage[1][\thecontentspage]{%
+  \hb@xt@\@pnumwidth{\hfil#1}%
+  \hspace*{-\@pnumwidth}}
+
+\newcommand\contentspush[1]{%
+  \sbox\z@{#1}%
+  \xdef\ttl@b{\advance\leftskip\the\wd\z@}%
+  \aftergroup\ttl@b
+  \leavevmode\llap{\box\z@}}
+
+% General commands. A level register. Explicit numbers
+% because they are used in csnames. Ignored if already defined.
+
+\ifx\ttll@section\@undefined
+
+  \@ifundefined{chapter}
+    {\def\ttll@part{0}}
+    {\def\ttll@part{-1}%
+     \def\ttll@chapter{0}}
+  \def\ttll@section{1}
+  \def\ttll@subsection{2}
+  \def\ttll@subsubsection{3}
+  \def\ttll@paragraph{4}
+  \def\ttll@subparagraph{5}
+
+\fi
+
+% We make sure that a series of * entries are finished and
+% that a \titlecontents in the middle of a document is
+% written to the right file. We need ship out floats before;
+% that's very tricky.
+
+\newcommand\contentsuse[2]{%
+  \expandafter\def\csname ttlx@#1\endcsname{#2}%
+  \expandafter\def\csname ttll@#1\endcsname{-1000}%
+  \expandafter\def\expandafter\ttl@finishall\expandafter{%
+    \ttl@finishall
+    \@writefile{#2}{\contentsfinish}}}
+
+\def\ttl@finishall{\@writefile{toc}{\contentsfinish}}
+
+\AtEndDocument{%
+  \ttl@startlists
+  \let\ttl@newpage\newpage
+  \def\newpage{%
+    \let\newpage\ttl@newpage
+    \newpage
+    \if@filesw
+      \immediate\write\@mainaux{\string\ttl@finishall}%
+    \fi}}
+
+\contentsuse{figure}{lof}
+\contentsuse{table}{lot}
+
+\def\contentsfinish{%
+  \ifttl@fromblock
+    \xdef\ttl@b{-10000}% ships out any saved punctuation
+    \ttl@preend
+    \@@par
+    \endgroup
+    \global\ttl@fromblockfalse
+  \fi}
+
+% The two basic commands. First \contentsmargin:
+
+\newcommand\contentsmargin[1][\z@]{%
+  \def\ttl@corr{#1}\def\@pnumwidth}
+
+% The following is the value of \contentsmargin when
+% used inside \ttl@tocenty (ie, \titlecontents).
+
+\newcommand\ttl@margin[2][\z@]{%
+  \def\ttl@corr{#1}%
+  \advance\rightskip-\@pnumwidth\relax
+  \advance\rightskip#2\relax
+  \def\@pnumwidth{#2}}
+
+% \titlecontents deals with concepts, not commands; hence no
+% escape char
+
+\newcommand\titlecontents{%
+  \@ifstar{\ttl@contents{\z@}}%
+          {\ttl@contents{\@ne}}}
+
+\def\ttl@contents#1#2{%
+  \@ifnextchar[{\ttl@contents@i{#1}{#2}}%
+               {\ttl@contents@i{#1}{#2}[\@nil]}}
+
+\def\ttl@contents@i#1#2[#3]#4#5#6#7{%
+  \expandafter\def\csname l@#2\endcsname
+    {\ttl@tocentry{#1}{#2}{#3}{#4}{{#5}{#6}}{#7}}%
+  \@ifnextchar[{\ttl@contents@ii{#1}{#2}}%
+               {\ttl@contents@ii{#1}{#2}[]}}
+
+\def\ttl@contents@ii#1#2[#3]{%
+  \ifcase#1\relax
+    \expandafter\@firstoftwo
+  \else
+    \expandafter\@secondoftwo
+  \fi
+  {\@ifnextchar[{\ttl@contents@iii{#1}{#2}{#3}}%
+                {\ttl@contents@iii{#1}{#2}{#3}[]}}%
+  {\ttl@contents@iv{#1}{#2}{#3}[][]}}
+
+\def\ttl@contents@iii#1#2#3[#4]{%
+  \@ifnextchar[{\@tempswatrue\ttl@contents@iv{#1}{#2}{#3}[#4]}%
+               {\@tempswafalse\ttl@contents@iv{#1}{#2}{#3}[#4][]}}
+
+\def\ttl@contents@iv#1#2#3[#4][#5]{%
+  \ifcase#1\relax
+    \if@tempswa
+      \ttl@contents@v{#2}{#3}{#4}{#5}%
+    \else
+      \ttl@contents@v{#2}{}{#3}{#4}%
+    \fi
+  \else
+    \ttl@contents@v{#2}{}{}{#3}%
+  \fi}
+
+\def\ttl@contents@v#1#2#3#4{%
+  \expandafter\def\csname ttlb@#1\endcsname{#2}%
+  \expandafter\def\csname ttlm@#1\endcsname{#3}%
+  \expandafter\def\csname ttle@#1\endcsname{#4}}
+
+\begingroup
+\catcode`\-=12\catcode`\>=12
+\gdef\ttl@strip#1->#2\@@#3{\def#3{#2}}
+\endgroup
+
+\AtBeginDocument{%
+  \def\ttl@change@i#1#2#3#4#5#6#7{%
+    \expandafter\def\csname l@#2\endcsname
+      {\ttl@tocentry{#1}{#2}{#3}{#4}{{#5}{#6}}{#7}}}%
+  \let\ttl@change@v\ttl@contents@v
+  \def\ttl@contents@i#1#2[#3]#4#5#6#7{%
+    \def\ttl@a{\ttl@change@i{#1}{#2}{#3}{#4}{#5}{#6}{#7}}%
+    \@ifnextchar[{\ttl@contents@ii{#1}{#2}}%
+                 {\ttl@contents@ii{#1}{#2}[]}}%
+  \def\ttl@contents@v#1#2#3#4{%
+    \def\ttl@b{\ttl@change@v{#1}{#2}{#3}{#4}}%
+    \expandafter\ttl@strip\meaning\ttl@a\@@\ttl@a
+    \expandafter\ttl@strip\meaning\ttl@b\@@\ttl@b
+    \edef\ttl@c{%
+      \expandafter\ifx\csname ttlx@#2\endcsname\relax
+        toc%
+      \else
+        \csname ttlx@#2\endcsname
+      \fi}%
+    \addtocontents{\ttl@c}{\ttl@a\relax}%
+    \addtocontents{\ttl@c}{\ttl@b\relax}}}
+
+% Printing the toc entry
+% ~~~~~~~~~~~~~~~~~~~~~~
+
+\def\ttl@lasttoc{-1000} % An inital dummy assignment
+
+% 1 ifblock, 2 sect name, 3 left, 4 before,
+% 5 {with}{without}, 6 filler/page, 7  title 8 pageno
+
+\let\ttl@preend\@empty
+
+\def\ttl@outpunct{%
+  \ifnum\ttl@c>\ttl@b\relax
+    \ttl@preend
+  \fi}
+
+\def\ttl@outblock#1#2#3{%
+  \ifcase#1\relax
+    \ifnum\ttl@b>\ttl@a\relax
+      \begingroup
+      \protected@edef\ttl@preend{%
+        \@nameuse{ttle@#2}%
+        \endgroup
+        \protect\@namedef{ttl@c}{\ttl@a}%
+        \protect\ttl@outpunct}%
+      #3%
+      \@nameuse{ttlb@#2}%
+    \else\ifnum\ttl@b<\ttl@a\relax
+      \ttl@preend
+      \@nameuse{ttlm@#2}%
+    \else
+      \@nameuse{ttlm@#2}%
+    \fi\fi
+  \else
+    \ttl@preend
+    \@@par
+    \endgroup
+    \@firstoftwo
+  \fi}
+
+\def\ttl@outnoblock#1#2#3{%
+  \begingroup
+  \ifnum\ttl@b>\ttl@a
+    \nobreak
+  \else\ifnum\ttl@b<\ttl@a
+    \addpenalty{\@secpenalty}%
+  \else
+    \addpenalty{\z@}% 
+  \fi\fi
+  \ttl@contentsstretch
+  \nobreak
+  \ifcase#1\relax\else\interlinepenalty\@M\fi
+  \parindent\z@
+  \ifx\@nil#2%
+    \PackageError{titletoc}{Unimplemented}%
+	    {The optional argument is currently mandatory}%
+  \else
+    \setlength\leftskip{#2}%
+  \fi
+  \setlength\rightskip{\@pnumwidth}%
+  \let\contentsmargin\ttl@margin
+  \def\ttl@makeline##1{##1}%
+  #3%
+  \addtolength{\parfillskip}{-\ttl@corr}%
+  \addtolength{\rightskip}{\ttl@corr}%
+  \let\ttl@leaders\leaders}
+
+\def\ttl@tocentry#1#2#3#4#5#6#7#8{%
+  \xdef\ttl@b{\csname ttll@#2\endcsname}%
+  \ifnum\ttl@b>\c@tocdepth\else
+    \ifnum\ttl@b<\ttl@toctop\else
+      \edef\ttl@a{\ttl@lasttoc}%
+      \gdef\thecontentspage{#8}%
+      \global\let\thecontentslabel\@empty
+      \global\ttl@labelfalse
+      \sbox\z@{%  Unused box. It just catch the numberline
+        \def\numberline##1{\global\ttl@labeltrue\gdef\thecontentslabel{##1}}%
+        #7}%    \ttl@b = current     \ttl@a = previous
+      \ifttl@fromblock
+        \ttl@outblock{#1}{#2}{#4}%
+      \else
+        \ttl@outnoblock{#1}{#3}{#4}%
+      \fi
+      \def\numberline##1{\ignorespaces}%
+      \ifttl@label
+        {\leavevmode\strut\@firstoftwo#5{#7}\strut\kern\z@}%
+      \else
+        {\leavevmode\strut\@secondoftwo#5{#7}\strut\kern\z@}%
+      \fi
+      {#6}%
+      \ifcase#1\relax
+        \ifttl@fromblock\else
+          \protected@edef\ttl@preend{\@nameuse{ttle@#2}}%
+        \fi
+        \global\ttl@fromblocktrue
+      \else
+        \@@par
+        \nobreak
+        \csname ttle@#2\endcsname
+        \endgroup
+        \global\ttl@fromblockfalse
+      \fi
+      \xdef\ttl@lasttoc{\csname ttll@#2\endcsname}%
+    \fi
+  \fi
+  \ignorespaces}
+
+\newcommand\dottedcontents{}
+\def\dottedcontents#1[#2]#3#4#5{%
+  \titlecontents{#1}[#2]{#3}%
+    {\contentslabel{#4}}%
+    {\hspace*{-#4}}%
+    {\titlerule*[#5]{.}\contentspage}}
+
+\ExecuteOptions{leftlabels,nodotinlabels,rubberseps}
+
+\ProcessOptions
+
+% Multiple tocs and lists
+% ~~~~~~~~~~~~~~~~~~~~~~~~
+% After some attemps to adapt titletoc to minitoc, I've decided
+% to implement my own solution, because entries as written by
+% minitoc are non standard and unmanageable. The new commands
+% provides a good deal of flexibility, too.
+
+\let\ttl@startlists\@empty
+\let\ttl@writefile\@writefile
+
+\def\ttl@partialtoc{ptc}
+\def\ttl@partiallof{plf}
+\def\ttl@partiallot{plt}
+
+\def\ttl@writepartial#1#2{%
+  \ttl@topartial{toc}{#1}{#2}%
+  \ttl@topartial{lof}{#1}{#2}%
+  \ttl@topartial{lot}{#1}{#2}%
+  \ttl@writefile{#1}{#2}}
+
+\def\ttl@topartial#1#2#3{%
+  \def\ttl@a{#1}%
+  \def\ttl@b{#2}%
+  \ifx\ttl@a\ttl@b
+     \ttl@writefile{\csname ttl@partial#2\endcsname}{#3}%
+  \fi}
+
+\def\ttl@xstartlist#1{%
+  \@ifundefined{ttl@startlist#1}{%
+    \global\@namedef{ttl@startlist#1}{%
+      \let\@writefile\ttl@writepartial
+      \if@filesw
+        \expandafter\newwrite\csname tf@#1\endcsname
+        \immediate\openout\csname tf@#1\endcsname\jobname.#1\relax
+      \fi
+      \@nobreakfalse}%
+    \expandafter\gdef\expandafter\ttl@startlists\expandafter{%
+      \ttl@startlists
+      \@nameuse{ttl@startlist#1}}}{}}
+
+\newcommand\startcontents[1][default]{\startlist[#1]{toc}}
+
+\newcommand\startlist[2][default]{%
+  \expandafter\ttl@xstartlist\csname ttl@partial#2\endcsname
+  \@ifundefined{ttl@#2@#1}%
+    {\expandafter\newcount\csname ttl@#2@#1\endcsname}%
+    {\stoplist[#1]{#2}}%  
+  \global\advance\csname ttl@#2@#1\endcsname\@ne
+  \resumelist[#1]{#2}}
+
+\newcommand\stopcontents[1][default]{\stoplist[#1]{toc}}
+
+\newcommand\stoplist[2][default]{%
+  \protected@write\@auxout{}{%
+    \string\ttl@writefile{\csname ttl@partial#2\endcsname}{%
+       \string\ttl@stoptoc{#1@\the\csname ttl@#2@#1\endcsname}}}}
+
+\newcommand\resumecontents[1][default]{\resumelist[#1]{toc}}
+
+\newcommand\resumelist[2][default]{%
+  \protected@write\@auxout{}{%
+    \string\ttl@writefile{\csname ttl@partial#2\endcsname}{%
+       \string\ttl@starttoc{#1@\the\csname ttl@#2@#1\endcsname}}}}
+
+\def\ttl@starttoc#1{%
+  \ifx\@writefile\@gobbletwo\else % Is this test necessary?
+    \def\ttl@a{#1}%
+    \ifx\ttl@a\ttl@ptoc
+      \let\contentsline\ttl@contentsline
+    \fi
+  \fi
+  \ignorespaces}
+
+\def\ttl@stoptoc#1{%
+  \ifx\@writefile\@gobbletwo\else % Is this test necessary?
+    \def\ttl@a{#1}%
+    \ifx\ttl@a\ttl@ptoc
+      \let\contentsline\ttl@gobblecontents
+    \fi
+  \fi
+  \ignorespaces}
+
+\newcommand\printcontents[4][default]{%
+  \ttl@printlist[#1]{toc}{#2}{#3}{#4}}
+
+\newcommand\printlist[4][default]{%
+  \ttl@printlist[#1]{#2}{#3}{-1001}{#4}}
+
+\newcommand\ttl@printlist[5][default]{%
+  \begingroup
+    \@ifundefined{ttl@#2@#1}%
+      {\PackageError{titletoc}{No partial #2 named #1}%
+          {You must start before a partial toc/list\MessageBreak
+          with \string/startcontents/\string\startlist.}}{}%
+    \edef\ttl@ptoc{#1@\the\csname ttl@#2@#1\endcsname}%
+    \def\ttl@toctop{#4}%
+    #5%
+    \let\ttl@xcontentsline\contentsline
+    \let\contentsline\ttl@gobblecontents
+    \def\ttl@contentsline##1{%
+      \@ifundefined{ttll@#3##1}%
+        {\expandafter\let\csname ttll@#3##1\expandafter\endcsname
+           \csname ttll@##1\endcsname}{}%
+      \@ifundefined{l@#3##1}%
+        {\ttl@xcontentsline{##1}}%
+        {\ttl@xcontentsline{#3##1}}}%
+    \makeatletter
+    \@input{\jobname.\csname ttl@partial#2\endcsname}%
+    \makeatother
+    \@nobreakfalse
+  \endgroup}
+
+\AtBeginDocument{%
+  \ifx\ttl@gobblecontents\@undefined
+    \def\ttl@gobblecontents#1#2#3{\ignorespaces}%
+  \fi}
+
+\def\ttl@toctop{-1000}
+
+% Now the we add \contentsfinish to the current definitions
+% and a "selector" for partial tocs
+
+\def\ttl@lselect#1{%
+  \ifnum\csname ttll@#1\endcsname>\c@tocdepth\else
+    \contentsfinish
+  \fi
+  \ifnum\csname ttll@#1\endcsname<\ttl@toctop\relax
+    \expandafter\@gobbletwo
+  \else
+    \expandafter\expandafter\csname ttl@savel@#1\endcsname
+  \fi}
+
+\let\ttl@savel@part\l@part
+\def\l@part{\ttl@lselect{part}}
+
+\let\ttl@savel@chapter\l@chapter
+\def\l@chapter{\ttl@lselect{chapter}}
+
+\let\ttl@savel@section\l@section
+\def\l@section{\ttl@lselect{section}}
+
+\let\ttl@savel@subsection\l@subsection
+\def\l@subsection{\ttl@lselect{subsection}}
+
+\let\ttl@savel@subsubsection\l@subsubsection
+\def\l@subsubsection{\ttl@lselect{subsubsection}}
+
+\let\ttl@savel@paragraph\l@paragraph
+\def\l@paragraph{\ttl@lselect{paragraph}}
+
+\let\ttl@savel@subparagraph\l@subparagraph
+\def\l@subparagraph{\ttl@lselect{subparagraph}}
+
+\let\ttl@savel@figure\l@figure
+\def\l@figure{\ttl@lselect{figure}}
+
+\let\ttl@savel@table\l@table
+\def\l@table{\ttl@lselect{table}}
+
+\@tempskipa\@pnumwidth
+\edef\@pnumwidth{\the\@tempskipa}
+\advance\@tempskipa-\@tocrmarg
+\edef\ttl@corr{-\the\@tempskipa}
+
+% Load patches if necessary
+
+\InputIfFileExists{titletoc.new}{}{}
+
+\endinput
+
-- 
cgit v1.2.3

