summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/tocloft/tocloft.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/tocloft/tocloft.dtx')
-rw-r--r--macros/latex/contrib/tocloft/tocloft.dtx3839
1 files changed, 3839 insertions, 0 deletions
diff --git a/macros/latex/contrib/tocloft/tocloft.dtx b/macros/latex/contrib/tocloft/tocloft.dtx
new file mode 100644
index 0000000000..dcf62b1da6
--- /dev/null
+++ b/macros/latex/contrib/tocloft/tocloft.dtx
@@ -0,0 +1,3839 @@
+% \iffalse meta-comment
+%
+% tocloft.dtx
+% Author: Peter Wilson, Herries Press
+% Maintainer: Will Robertson (will dot robertson at latex-project dot org)
+% Copyright 1998-2003 Peter R. Wilson
+% Copyright 2009-2017 Will Robertson
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either
+% version 1.3c of this license or (at your option) any
+% later version. <http://www.latex-project.org/lppl.txt>
+%
+% This work has the LPPL maintenance status "maintained".
+% The Current Maintainer of this work is Will Robertson.
+%
+% This work consists of the files listed in the README file.
+%
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{hypdoc}
+\EnableCrossrefs
+\CodelineIndex
+\setcounter{StandardModuleDepth}{1}
+\begin{document}
+ \DocInput{tocloft.dtx}
+\end{document}
+%</driver>
+%
+%<*usc>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{tocloft}[2017/08/31 v2.3i parameterised ToC, etc., typesetting]
+%</usc>
+%
+% \fi
+%
+% \changes{v0.1}{1998/12/31}{First public (alpha) release}
+% \changes{v0.1a}{1999/01/15}{Improved documentation}
+% \changes{v0.2}{1999/01/17}{Uses the stdclsdv package}
+% \changes{v0.2a}{1999/01/17}{Interfaced with the tocbibind package}
+% \changes{v0.2b}{1999/03/07}{Corrected failure when used with float package}
+% \changes{v0.2c}{1999/06/30}{Added raggedright example}
+% \changes{v0.3}{1999/08/22}{Added option to prevent ToC head change}
+% \changes{v1.0}{1999/09/19}{Added PackageNote reporting}
+% \changes{v1.1}{2000/02/11}{Added cftXpresnum commands}
+% \changes{v1.1}{2000/02/11}{Added support for subfigure package}
+% \changes{v1.1a}{2000/02/11}{Changed X to Z in section 2.2}
+% \changes{v2.0}{2001/03/03}{Added command for new list of...}
+% \changes{v2.0}{2001/03/03}{Removed requirement for stdclsdv package}
+% \changes{v2.0}{2001/03/15}{Removed requirement for hyperref option}
+% \changes{v2.1}{2001/04/08}{Added control over parskip in ToC etc.}
+% \changes{v2.2}{2001/04/17}{Another fix for hyperref}
+% \changes{v2.3}{2002/06/15}{Made to work with the koma classes}
+% \changes{v2.3a}{2002/10/03}{Partial fix for Part changes}
+% \changes{v2.3b}{2003/01/20}{More fixes for Part changes}
+% \changes{v2.3c}{2003/09/26}{More fixes for hyperref}
+% \changes{v2.3d}{2009/09/04}{New maintainer and tiny bug fix}
+% \changes{v2.3e}{2010/10/13}{Remove a message from the console output}
+%
+% \def\dtxfile{\texttt{tocloft.dtx}}
+% \def\fileversion{v1.1a} \def\filedate{2000/02/11}
+% \def\fileversion{v2.0} \def\filedate{2001/03/15}
+% \def\fileversion{v2.1} \def\filedate{2001/04/08}
+% \def\fileversion{v2.2} \def\filedate{2001/04/17}
+% \def\fileversion{v2.3} \def\filedate{2002/06/15}
+% \def\fileversion{v2.3a} \def\filedate{2002/10/03}
+% \def\fileversion{v2.3b} \def\filedate{2003/01/20}
+% \def\fileversion{v2.3c} \def\filedate{2003/09/26}
+% \def\fileversion{v2.3d} \def\filedate{2009/09/04}
+% \def\fileversion{v2.3e} \def\filedate{2010/10/13}
+% \def\fileversion{v2.3f} \def\filedate{2013/05/02}
+% \def\fileversion{v2.3g} \def\filedate{2014/06/14}
+% \def\fileversion{v2.3h} \def\filedate{2017/08/29}
+% \def\fileversion{v2.3i} \def\filedate{2017/08/31}
+%
+% \CheckSum{2302}
+%
+% \DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath}
+% \DoNotIndex{\@centercr,\@cite}
+% \DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue}
+% \DoNotIndex{\@input,\@ixpt,\@m}
+% \DoNotIndex{\@minus,\@mkboth,\@ne,\@nil,\@nomath,\@plus,\@set@topoint}
+% \DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb}
+% \DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt}
+% \DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt}
+% \DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace}
+% \DoNotIndex{\advance,\Alph,\alph}
+% \DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box}
+% \DoNotIndex{\bullet}
+% \DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption}
+% \DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass}
+% \DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist}
+% \DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup}
+% \DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter}
+% \DoNotIndex{\fbox}
+% \DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef}
+% \DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule}
+% \DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi}
+% \DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi}
+% \DoNotIndex{\input}
+% \DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark}
+% \DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright}
+% \DoNotIndex{\month,\newcommand,\newcounter,\newenvironment}
+% \DoNotIndex{\NeedsTeXFormat,\newdimen}
+% \DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number}
+% \DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@}
+% \DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip}
+% \DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions}
+% \DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright}
+% \DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font}
+% \DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily,\roman}
+% \DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength}
+% \DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space}
+% \DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase}
+% \DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt}
+% \DoNotIndex{\viipt,\vipt,\vskip,\vspace}
+% \DoNotIndex{\wd,\xiipt,\year,\z@}
+%
+% \newcommand*{\Lpack}[1]{\textsf {#1}} ^^A typeset a package
+% \newcommand*{\Lopt}[1]{\textsf {#1}} ^^A typeset an option
+% \newcommand*{\file}[1]{\texttt {#1}} ^^A typeset a file
+% \newcommand*{\Lcount}[1]{\textsl {\small#1}} ^^A typeset a counter
+% \newcommand*{\pstyle}[1]{\textsl {#1}} ^^A typeset a pagestyle
+% \newcommand*{\Lenv}[1]{\texttt {#1}} ^^A typeset an environment
+% \providecommand{\bs}{\textbackslash}
+%
+% \title{The \Lpack{tocloft} package\thanks{This
+% file (\dtxfile) has version number \fileversion, last revised
+% \filedate.}}
+%
+% \author{
+% Author: Peter Wilson, Herries Press \\
+% Maintainer: Will Robertson \\
+% \texttt{will dot robertson at latex-project dot org}
+% }
+% \date{\filedate}
+% \maketitle
+% \begin{abstract}
+% The \Lpack{tocloft} package provides means of controlling the
+% typographic design of the Table of Contents, List of Figures and List of
+% Tables. New kinds of `List of \ldots' can be defined.
+%
+% The package has been tested with the
+% \Lpack{tocbibind},
+% \Lpack{minitoc},
+% \Lpack{ccaption},
+% \Lpack{subfigure},
+% \Lpack{float},
+% \Lpack{fncychap}, and
+% \Lpack{hyperref}
+% packages.
+% \end{abstract}
+% \tableofcontents
+% \makeatletter \renewcommand{\@dotsep}{9.0} \makeatother
+% \listoffigures
+% \listoftables
+% \StopEventually{}
+%
+%
+%
+% \section{Introduction}
+%
+% In the standard classes the typographic design of the Table of Contents
+% (ToC), the List of Figures (LoF) and List of Tables (LoT) is fixed or,
+% more precisely, it is buried within the class definitions.
+% The \Lpack{tocloft} package provides handles for an author to
+% change the design to meet the needs of the particular document.
+%
+% Elements of the package were developed as part of a class
+% and package bundle for typesetting ISO standards~\cite{PRW96i}.
+% This manual is typeset according to the conventions of the
+% \LaTeX{} \textsc{docstrip} utility which enables the automatic
+% extraction of the \LaTeX{} macro source files~\cite{GOOSSENS94}.
+%
+% Section~\ref{sec:usc} describes the usage of the package.
+% Commented source code for the package is in Section~\ref{sec:code}.
+%
+% The package has been tested in combination with at least
+% the \Lpack{tocbibind} package~\cite{TOCBIBIND},
+% the \Lpack{minitoc} package~\cite{MINITOC},
+% the \Lpack{ccaption} package~\cite{CCAPTION},
+% the \Lpack{subfigure} package~\cite{SUBFIGURE} (versions 2.0 and 2.1),
+% the \Lpack{algorithm} package~\cite{ALGORITHM} (which, in turn, calls the
+% \Lpack{float} package~\cite{FLOAT}) and the \Lpack{fncychap} package~\cite{FNCYCHAP}.
+% It also works with the \Lpack{hyperref} package.
+% Please send me any comments as to how you think
+% that the package can be improved, or of any interesting examples of
+% how you have used
+% it.\footnote{Thanks to Rowland (\texttt{rebecca@astrid.u-net.com}),
+% John Foster (\texttt{john@isjf.demon.co.uk}),
+% Kasper (\texttt{kbg@dkik.dk}),
+% Lee Nave (\texttt{nave@math.washington.edu}),
+% and Andrew Thurber (\texttt{athurber@emba.uvm.edu})
+% for their suggestions.}
+%
+% \subsection{\LaTeX 's methods}
+%
+% This is a general description of how \LaTeX{} does the processing
+% for a Table of Contents. As the processing for List of Figures and
+% List of Tables is similar I will, without loss of generality, just
+% discuss the ToC.
+%
+% \DescribeMacro{\addcontentsline}
+% \LaTeX{} generates a \file{.toc} file if the document contains a
+% |\tableofcontents| command. The sectioning
+% commands\footnote{For figures and tables it is the \texttt{\bs caption} command
+% that populates the \file{.lof} and \file{.lot} files.}
+% put entries into the \file{.toc} file by calling the \LaTeX{}
+% |\addcontentsline{|\meta{file}|}{|\meta{kind}|}{|\meta{title}|}|
+% command, where \meta{file} is the file extension (e.g., |toc|),
+% \meta{kind} is the kind of entry (e.g., |section| or |subsection|),
+% and \meta{title} is the (numberered) title text. In the cases where
+% there is a number, the \meta{title} argument is given in the
+% form |{\numberline{number} title-text}|.
+%
+% NOTE: The \Lpack{hyperref} package dislikes authors using
+% |\addcontentsline|. To get it to work properly with \Lpack{hyperref}
+% you normally have to put |\phantomsection| (a macro defined within
+% the \Lpack{hyperref} package) immediately
+% before |\addcontentsline|.
+%
+% \DescribeMacro{\contentsline}
+% The |\addcontentsline| command writes an entry to the given file
+% in the form |\contentsline{|\meta{kind}|}{|\meta{title}|}{|\meta{page}|}|
+% where \meta{page} is the page number.
+% For each \meta{kind}, \LaTeX{} provides a command
+% |\l@kind{|\meta{title}|}{|\meta{page}|}| which performs the actual
+% typesetting of the |\contentsline| entry.
+%
+% \newcommand{\maxx}{120} ^^A picture width
+% \newcommand{\maxxm}{118} ^^A \maxx - 2\
+% \newcommand{\maxy}{55} ^^A picture height
+% \newcommand{\maxym}{53} ^^A \maxy - 2
+% \newcommand{\findent}{20} ^^A indent
+% \newcommand{\findentp}{22} ^^A \findent + 2
+% \newcommand{\fnumwidth}{10} ^^A numwidth
+% \newcommand{\ftocrmarg}{30} ^^A \@tocrmarg
+% \newcommand{\fpnumwidth}{20} ^^A \@pnumwidth
+% \newcommand{\fipn}{30} ^^A \findent + \fnumwidth
+% \newcommand{\frmarg}{90} ^^A \maxx - \ftocrmarg
+% \newcommand{\frnum}{100} ^^A \maxx - \fpnumwidth
+% \newcommand{\fyi}{10} ^^A 1st y height
+% \newcommand{\fyim}{8} ^^A \fyi - 2
+% \newcommand{\fyii}{20} ^^A 2nd y height
+% \newcommand{\fyiii}{25} ^^A 3rd y height
+% \newcommand{\fyiv}{30} ^^A 4th y height
+% \newcommand{\fyv}{40} ^^A 5th y height
+% \newcommand{\fyvp}{42} ^^A \fyv + 2
+% \newcommand{\flin}{4} ^^A length of leader lines
+% \newcommand{\frmargm}{89} ^^A \frmarg (90) - a little bit
+%
+% \providecommand{\bs}{\textbackslash}
+% \begin{figure}
+% \centering
+% \setlength{\unitlength}{1mm}
+% \begin{picture}(\maxx,\maxy)
+% ^^A side lines and linewidth
+% \put(0,0){\line(0,1){\maxy}}
+% \put(\maxx,0){\line(0,1){\maxy}}
+% \put(0,\maxy){\vector(1,0){\maxx}}
+% \put(2,\maxym){\makebox(0,0)[tl]{\texttt{\bs linewidth}}}
+% ^^A \@pnumwidth
+% \put(\maxx,\fyi){\vector(-1,0){\fpnumwidth}}
+% \put(\maxxm,\fyim){\makebox(0,0)[tr]{\texttt{\bs @pnumwidth}}}
+% \put(\frnum,\fyi){\line(0,1){\flin}}
+% ^^A \@tocrmarg
+% \put(\maxx,\fyv){\vector(-1,0){\ftocrmarg}}
+% \put(\maxxm,\fyvp){\makebox(0,0)[br]{\texttt{\bs @tocrmarg}}}
+% \put(\frmarg,\fyv){\line(0,-1){\flin}}
+% ^^A indent
+% \put(0,\fyv){\vector(1,0){\findent}}
+% \put(2,\fyvp){\makebox(0,0)[bl]{\textit{indent}}}
+% \put(\findent,\fyv){\line(0,-1){\flin}}
+% ^^A numwidth
+% \put(\findent,\fyv){\vector(1,0){\fnumwidth}}
+% \put(\findentp,\fyvp){\makebox(0,0)[bl]{\textit{numwidth}}}
+% \put(\fipn,\fyv){\line(0,-1){\flin}}
+% ^^A last title line
+% \put(\maxx,\fyii){\makebox(0,0)[br]{487}}
+% \put(\fipn,\fyii){title end}
+% ^^A second title line
+% \put(\fipn,\fyiii){continue\ldots}
+% \put(\frmarg,\fyiii){\makebox(0,0)[br]{\ldots title}}
+% ^^A first title line
+% \put(\findent,\fyiv){\textbf{3.5}}
+% \put(\fipn,\fyiv){Heading\ldots}
+% \put(\frmarg,\fyiv){\makebox(0,0)[br]{\ldots title}}
+% ^^A dotted leader
+% \multiput(\frmargm,\fyii)(-\flin,0){12}{.}
+% \multiput(\frmarg,\fyi)(-\flin,0){2}{\line(0,1){\flin}}
+% \put(\frmarg,\fyi){\vector(-1,0){\flin}}
+% \put(\frmarg,\fyi){\vector(1,0){0}}
+% \put(\frmarg,\fyim){\makebox(0,0)[tr]{\texttt{\bs @dotsep}}}
+%
+% \end{picture}
+% \setlength{\unitlength}{1pt}
+% \caption{Layout of a ToC (LoF, LoT) entry} \label{fig:ltoc}
+% \end{figure}
+%
+%
+% \DescribeMacro{\@pnumwidth}
+% \DescribeMacro{\@tocrmarg}
+% \DescribeMacro{\@dotsep}
+% The general layout of a
+% typeset entry is illustrated in Figure~\ref{fig:ltoc}. There are three
+% internal \LaTeX{} commands that are used in the typesetting. The page
+% number is typeset flushright in a box of width |\@pnumwidth|, and the box
+% is at the righthand margin. If the page number is too long to fit into
+% the box it will stick out into the righthand margin. The title text
+% is indented from the righthand margin by an amount given by |\@tocrmarg|.
+% Note that |\@tocrmarg| should be greater than |\@pnumwidth|. Some
+% entries are typeset with a dotted leader between the end of the title
+% title text and the righthand margin indentation. The distance, in
+% \emph{math units}\footnote{There are 18mu to 1em.} between the dots
+% in the leader is given by the value of |\@dotsep|. In the standard
+% classes the same values are used for the ToC, LoF and the LoT.
+%
+% The standard values for these internal commands are:
+% \begin{itemize}
+% \item |\@pnumwidth| = 1.55em
+% \item |\@tocrmarg| = 2.55em
+% \item |\@dotsep| = 4.5
+% \end{itemize}
+% The values can be changed by using |\renewcommand|, in spite of the
+% fact that the first two appear to be lengths.
+%
+% Dotted leaders are not available for Part and Chapter ToC entries
+% (nor for Section entries in the \Lpack{article} class and its derivatives).
+%
+% \DescribeMacro{\numberline}
+% Each |\l@kind| macro is responsible for setting the general
+% \textit{indent} from the lefthand margin, and the \textit{numwidth}.
+% The |\numberline{|\meta{number}|}| macro is responsible for typesetting
+% the number flushleft in a box of width
+% \textit{numwidth}. If the number is too long for the box then it will
+% protrude into the title text. The title text is indented by
+% (\textit{indent + numwidth}) from the lefthand margin. That is, the title
+% text is typeset in a block of width \\
+% (|\linewidth| - \textit{indent} - \textit{numwidth} - |\@tocrmarg|).
+%
+% \begin{table}
+% \centering
+% \caption[Indents and Numwidths]{Indents and Numwidths (in ems)} \label{tab:indents}
+% \begin{tabular}{lcrrrr} \hline
+% Entry & Level & \multicolumn{2}{c}{Chaptered} & \multicolumn{2}{c}{Otherwise} \\
+% & & indent & numwidth & indent & numwidth \\ \hline
+% part & -1 & 0 & --- & 0 & --- \\
+% chapter & 0 & 0 & 1.5 & & \\
+% section & 1 & 1.5 & 2.3 & 0 & 1.5 \\
+% subsection & 2 & 3.8 & 3.2 & 1.5 & 2.3 \\
+% subsubsection & 3 & 7.0 & 4.1 & 3.8 & 3.2 \\
+% paragraph & 4 & 10.0 & 5.0 & 7.0 & 4.1 \\
+% subparagraph & 5 & 12.0 & 6.0 & 10.0 & 5.0 \\
+% figure/table & (1) & 1.5 & 2.3 & 1.5 & 2.3 \\ \hline
+% \end{tabular}
+% \end{table}
+%
+% Table~\ref{tab:indents} lists the standard values for the \textit{indent}
+% and \textit{numwidth}. There is no explicit \textit{numwidth} for a
+% part; instead a gap of 1em is put between the number and the title text.
+% Note that for a sectioning command the values
+% depend on whether or not the document class provides the |\chapter|
+% command. Also, which somewhat surprises me, the table and figure entries
+% are all indented.
+%
+% \DescribeMacro{\@dottedtocline}
+% Most of the |\l@kind| commands are defined in terms of the
+% |\@dottedtocline| command. This command takes three arguments: \\
+% |\@dottedtocline{|\meta{seclevel}|}{|\meta{indent}|}{|\meta{numwidth}|}|. \\
+% For example, one definition of the |\l@section| command is: \\
+% |\newcommand*{\l@section}{\@dottedtocline{1}{1.5em}{2.3em}}| \\
+% If it is necessary to change the default typesetting of the entries,
+% then it is usually necessary to change these definitions (but the
+% \Lpack{tocloft} package gives you handles to easily alter things without
+% having to know the \LaTeX{} internals).
+%
+% You can use the |\addcontentsline| command to add |\contentsline|
+% commands to a file.
+%
+% \DescribeMacro{\addtocontents}
+% \LaTeX{} also provides the |\addtocontents{|\meta{file}|}{|\meta{text}|}|
+% command that will insert \meta{text} into \meta{file}. You can use
+% this for adding extra text and/or macros into the file, for processing
+% when the file is typeset by |\tableofcontents| (or whatever other
+% command is used for \meta{file} processing, such as |\listoftables|
+% for a \file{.lot} file).
+%
+% As |\addcontentsline| and |\addtocontents| write their arguments to a
+% file, any fragile commands used in their arguments must be |\protect|ed.
+%
+% You can make certain adjustments to the ToC etc., layout without
+% using any package. Some examples are:
+% \begin{itemize}
+% \item If your page numbers stick out into the righthand margin
+% \begin{verbatim}
+% \renewcommand{\@pnumwidth}{3em} \renewcommand{\@tocrmarg}{4em}
+% \end{verbatim}
+% but using lengths appropriate to your document.
+%
+% \item To have the (sectional) titles in the ToC, etc., typeset ragged right with no
+% hyphenation
+% \begin{verbatim}
+% \renewcommand{\@tocrmarg}{2.55em plus1fil}
+% \end{verbatim}
+% where the value |2.55em| can be changed for whatever margin space you want.
+%
+% \item The dots in the leaders can be eliminated by increasing |\@dotsep|
+% to a large value:
+% \begin{verbatim}
+% \renewcommand{\@dotsep}{10000}
+% \end{verbatim}
+%
+% \item To have dotted leaders in your ToC and LoF but not in your LoT:
+% \begin{verbatim}
+% ...
+% \tableofcontents
+% \makeatletter \renewcommand{\@dotsep}{10000} \makeatother
+% \listoftables
+% \makeatletter \renewcommand{\@dotsep}{4.5} \makeatother
+% \listoffigures
+% ...
+% \end{verbatim}
+% For this document I used this method to double the dot spacing for
+% the LoF with respect to that for the ToC. As you can see, it is much
+% better that all dot leaders have the same spacing.
+%
+% \item To add a horizontal line across the whole width of the ToC below
+% an entry for a Part:
+% \begin{verbatim}
+% \part{Part title}
+% \addtocontents{toc}{\protect\mbox{}\protect\hrulefill\par}
+% \end{verbatim}
+% Note that as both |\addtocontents| and |\addcontentsline| write their
+% arguments to a file, it means that any \emph{fragile} commands in
+% their arguments must be protected
+% by preceding each fragile command with |\protect|.
+% The result of the example above
+% would be the following two lines in the \file{.toc} file (assuming that it
+% is the second Part and is on page 34):
+% \begin{verbatim}
+% \contentsline {part}{II\hspace {1em}Part title}{34}
+% \mbox {}\hrulefill \par
+% \end{verbatim}
+% If the |\protect|s were not used, then the second line would instead be:
+% \begin{small}
+% \begin{verbatim}
+% \unhbox \voidb@x \hbox {}\unhbox \voidb@x \leaders \hrule \hfill \kern \z@ \par
+% \end{verbatim}
+% \end{small}
+%
+% \item You may get undesired page breaks in the ToC. For example you
+% may have a long multiline section title and in the ToC there is a page
+% break between the lines. After your document is stable you can use
+% |\addtocontents| at appropriate places in the body of the document
+% to adjust the page breaking in the ToC. As examples:
+% \begin{itemize}
+% \item |\addtocontents{toc}{\protect\newpage}| to force a page break.
+% \item |\addtocontents{toc}{\protect\enlargethispage{2\baselineskip}}| to
+% make the page longer.
+% \item |\addtocontents{toc}{\protect\needspace{2\baselineskip}}| to specify
+% that if there is not a vertical space of two baselines left on
+% the page then start a new page (the |\needspace| macro is defined
+% in the \Lpack{needspace} package).
+% \end{itemize}
+%
+% \end{itemize}
+% Remember, if you are modifying any command that includes an |@| sign then this
+% must be done in either a \file{.sty} file or if in the document itself
+% it must be
+% surrounded by |\makeatletter| and |\makeatother|. For example, if you
+% want to modify |\@dotsep| in the preamble to your document you have
+% to do it like this:
+% \begin{verbatim}
+% \makeatletter
+% \renewcommand{\@dotsep}{9.0}
+% \makeatother
+% \end{verbatim}
+%
+%
+% \section{The \Lpack{tocloft} package} \label{sec:usc}
+%
+% The \Lpack{tocloft} package provides means of specifying the
+% typography of the Table of Contents (ToC), the List of Figures (LoF)
+% and the List of Tables (LoT).
+%
+% \DescribeMacro{\tableofcontents}
+% \DescribeMacro{\listoffigures}
+% \DescribeMacro{\listoftables}
+% The ToC, LoF, and LoT are printed at the point in the document where
+% these commands are called, as per normal \LaTeX. However, there is
+% one difference between the standard \LaTeX{} behaviour and the behaviour
+% with the \Lpack{tocloft} package. In the standard \LaTeX{} classes
+% that have |\chapter| headings, the ToC, LoF and LoT each appear on
+% a new page. With the \Lpack{tocloft} package they do not necessarily
+% start new pages; if you want them to be on new pages you may have to
+% specifically issue an appropriate command beforehand. For example:
+% \begin{verbatim}
+% ...
+% \clearpage
+% \tableofcontents
+% \clearpage
+% \listoftables
+% ...
+% \end{verbatim}
+%
+% \DescribeMacro{\tocloftpagestyle}
+% The |\thispagestyle| page style of the ToC, LoF and/or LoT is set
+% by the command
+% |\tocloftpagestyle{|\meta{style}|}|, where \meta{style} is one of
+% the available page styles. The package initially
+% sets |\tocloftpagestyle{plain}|.
+%
+% \subsection{Package options}
+%
+% The package takes the following options:
+% \begin{itemize}
+% \item[\Lopt{subfigure}] This option is required if, and only if,
+% the \Lpack{tocloft} and
+% \Lpack{subfigure} packages are being used together. The two packages
+% can be specified in any order.
+%
+% \item[\Lopt{titles}]
+% The \Lopt{titles} option causes
+% the titles of the ToC, LoF, and LoT lists to be typeset using the
+% default \LaTeX{} methods. This can be useful, for example, when the
+% \Lpack{tocloft} and \Lpack{fncychap} packages are used together and
+% the `fancy' chapter styles should be used for the ToC, etc., titles.
+%
+% \end{itemize}
+%
+% If you use the \Lopt{titles} option you can ignore the next
+% section and continue reading at section~\ref{sec:entries}.
+%
+% \subsection{Changing the titles} \label{sec:titles}
+%
+% Commands are provided for controlling the appearance of the
+% titles. Following \LaTeX{} custom, the title texts are the values
+% of the |\contentsname|, |\listfigurename| and |\listtablename| commands.
+%
+% Similar sets of commands are provided for ToC, LoF and LoT title
+% typsetting control. For convenience (certainly mine, and hopefully yours)
+% in the following
+% descriptions I will use |Z| to stand for `toc' or `lof' or `lot'. For
+% example, |\cftmarkZ| stands for |\cftmarktoc| or |\cftmarklof| or
+% |\cftmarklot|.
+%
+% \DescribeMacro{\cftmarkZ}
+% These macros set the appearance of the running heads on the ToC, LoF, and
+% LoT pages. You probably don't need to change these.
+%
+% \DescribeMacro{\cftbeforeZtitleskip}
+% \DescribeMacro{\cftafterZtitleskip}
+% These lengths control the vertical spacing before and after the titles.
+% You can change them from their default values by using |\setlength|.
+%
+% \DescribeMacro{\cftZtitlefont}
+% \DescribeMacro{\cftafterZtitle}
+% The code used for typesetting the ToC title looks like
+% \begin{verbatim}
+% {\cfttoctitlefont \contentsname}{\cftaftertoctitle}\par
+% \end{verbatim}
+% By default, |\cftZtitlefont| is defined as a font specification
+% (e.g., |\Large\bfseries|), and |\cftafterZtitle| is empty.
+% These commands can be changed (via |\renewcommand|) to change
+% the typesetting. As examples:
+% \begin{itemize}
+% \item |\renewcommand{\cftZtitlefont}{\hfill\Large\itshape}| will
+% result in a Large italic title typeset flushright.
+% \item |\renewcommand{\cftZtitlefont}{\hfill\Large\bfseries}| together
+% with |\renewcommand{\cftafterZtitle}{\hfill}| will give
+% a centered Large bold title.
+% \item Doing
+% \begin{verbatim}
+% \renewcommand{\cftafterZtitle}{%
+% \\[\baselineskip]\mbox{}\hfill{\normalfont Page}}
+% \end{verbatim}
+% will put the word `Page' flushright on the line following the title.
+% (If you do this, then you may need to decrease
+% |\cftafterZtitleskip|).
+% \item |\renewcommand{\cftafterZtitle}{\thispagestyle{empty}}| will
+% make the page with the title empty (i.e., the page
+% number will not be printed).
+% \end{itemize}
+%
+%
+% \subsection{Typesetting the entries} \label{sec:entries}
+%
+% Commands are also provided to enable finer control over the typesetting
+% of the different kinds of entries. The parameters defining the default
+% layout of the entries are illustrated as part of the \Lpack{layouts}
+% package or in~\cite[page 34]{GOOSSENS94}, and are repeated in
+% Figure~\ref{fig:ltoc}.
+%
+% \DescribeMacro{\cftdot}
+% In the default ToC typesetting only the more minor entries have dotted
+% leader lines between the sectioning title and the page number. The
+% \Lpack{tocloft} package provides for general leaders for all entries.
+% The `dot' in a leader is given by the value of |\cftdot|. Its default
+% definition is |\newcommand{\cftdot}{.}| which gives the default
+% dotted leader. By changing |\cftdot| you can use symbols other than
+% a period in the leader. For example
+% \begin{verbatim}
+% \renewcommand{\cftdot}{\ensuremath{\ast}}
+% \end{verbatim}
+% will result in a dotted leader using asterisks as the symbol.
+%
+% \DescribeMacro{\cftdotsep}
+% \DescribeMacro{\cftnodots}
+% Each kind of entry can control the separation between the dots
+% in its leader (see below). For consistency though, all dotted leaders
+% should use the same spacing. The macro |\cftdotsep| specifies the
+% default spacing. Its value is a number.
+% However, if the separation is too large
+% then no dots will be actually typeset. The macro |\cftnodots| is
+% a separation value that is `too large'.
+%
+% \DescribeMacro{\cftsetpnumwidth}
+% \DescribeMacro{\cftsetrmarg}
+% The page numbers are typeset in a fixed width box. The command
+% |\cftsetpnumwidth{|\meta{length}|}| can be used to change the width
+% of the box (\LaTeX 's internal |\@pnumwidth|).
+% The title texts will end before reaching the righthand margin.
+% |\cftsetrmarg{|\meta{length}|}| can be used to set this distance
+% (\LaTeX 's internal |\@tocrmarg|).
+% Note that the length used in |\cftsetrmarg| should be greater
+% than the length set in |\cftsetpnumwidth|. These values should remain
+% constant in any given document.
+%
+% \DescribeMacro{\cftpnumalign}
+% The page numbers are typeset in a box as described above.
+% By default they are right-aligned which is suitable when the page numbers are aligned vertically on the page so their digits line up.
+% For a design with fixed width between a ToC entry and its page number, say, a left alignment may be more suitable.
+% This can be controlled by setting the \cs{cftpnumalign} macro to \verb|l|, \verb|c|, or \verb|r| (just like \cs{makebox}):
+% \begin{verbatim}
+% \renewcommand{\cftpnumalign}{l}
+% \end{verbatim}
+%
+% \DescribeMacro{\cftparskip}
+% Normally the |\parskip| in the ToC, etc., is zero. This may be changed
+% by changing the |\cftparskip| length. Note that the current value
+% of |\cftparskip| is used for the ToC, LoF and LoT, but you can change
+% the value before calling |\tableofcontents| or |\listoffigures| or
+% |\listoftables| if one or other of these should have different values
+% (which is not a good idea).
+%
+%
+% In the following I will use |X| to stand for the following:
+% \begin{itemize}
+% \item |part| for |\part| titles
+% \item |chap| for |\chapter| titles
+% \item |sec| for |\section| titles
+% \item |subsec| for |\subsection| titles
+% \item |subsubsec| for |\subsubsection| titles
+% \item |para| for |\paragraph| titles
+% \item |subpara| for |\subparagraph| titles
+% \item |fig| for figure |\caption| titles
+% \item |subfig| for subfigure |\caption| titles
+% \item |tab| for table |\caption| titles
+% \item |subtab| for subtable |\caption| titles
+% \end{itemize}
+%
+% \DescribeMacro{\cftbeforeXskip}
+% This controls the vertical space before an entry. It can be changed
+% by using |\setlength|.
+%
+% \DescribeMacro{\cftXindent}
+% This controls the indentation of an entry from the left margin
+% (\textit{indent} in Figure~\ref{fig:ltoc}). It
+% can be changed using |\setlength|.
+%
+% \DescribeMacro{\cftXnumwidth}
+% This controls the space allowed for typesetting title numbers
+% (\textit{numwidth} in Figure~\ref{fig:ltoc}). It can
+% be changed using |\setlength|. Second and subsequent lines of a multiline
+% title will be indented by this amount.
+%
+% The remaining commands are related to the specifics of typesetting
+% an entry.
+% This is a simplified pseudo-code version for the typesetting of numbered
+% and unnumbered entries.
+% \begin{verbatim}
+% {\cftXfont {\cftXpresnum SNUM\cftXaftersnum\hfil} \cftXaftersnumb TITLE}%
+% {\cftXleader}{\cftXpagefont PAGE}\cftXafterpnum\par
+%
+% {\cftXfont TITLE}{\cftXleader}{\cftXpagefont PAGE}\cftXafterpnum\par
+% \end{verbatim}
+% where |SNUM| is the section number, |TITLE| is the title text and |PAGE|
+% is the page number. In the numbered entry the pseudo-code \\
+% |{\cftXpresnum SNUM\cftaftersnum\hfil}| \\
+% is typeset within a box of width |\cftXnumwidth|.
+%
+% \DescribeMacro{\cftXfont}
+% This controls the appearance of the title (and its preceding number,
+% if any). It may be changed using |\renewcommand|.
+%
+% \DescribeMacro{\cftXpresnum}
+% \DescribeMacro{\cftXaftersnum}
+% \DescribeMacro{\cftXaftersnumb}
+% \changes{v1.1}{2000/02/11}{Added description of \cs{cftXpresnum}}
+% Normally the section number is typeset within a box of width |\cftXnumwidth|.
+% Within the box the macro |\cftXpresnum| is first called, then the
+% number is typeset, and next the |\cftXaftersnum|
+% macro is called after the number is typeset. The last command
+% within the box is |\hfil| to make the box contents flushleft.
+% After the box is
+% typeset the |\cftXaftersnumb| macro is called before typesetting
+% the title text. All three of these can be changed by |\renewcommand|.
+% By default they are defined to do nothing.
+%
+% In the standard classes the ToC entry for a |\part| is just typeset as
+% the number and title, followed by the page number, with the
+% |\cftpartpresnum|
+% macro being called before typesetting the number and title.
+% Due to \LaTeX\ ideosyncracies, |\cftpartpresnum| may become doubled in the output
+% if a third-party package behaves differently to that of the default internal \LaTeX\ commands.
+% The |tocloft| package contains specific code to prevent this in the case of
+% the KomaScript classes and for the |titlesec| package; please contact the maintainer
+% to add further corrections if you discover other packages which also exhibit this mis-behaviour.
+%
+% When a standard class is used the |\cftpartaftersnum| and
+% |\cftpartaftersnumb| macros have no effect, but they may do something
+% if a non-standard class is used.
+%
+%
+% \DescribeMacro{\cftXleader}
+% \DescribeMacro{\cftXdotsep}
+% |\cftXleader| defines the leader between the title and the page number;
+% it can be changed by |\renewcommand|.
+% The spacing between any dots in the leader is controlled by |\cftXdotsep|
+% (|\@dotsep| in Figure~\ref{fig:ltoc}).
+% It can be changed by |\renewcommand| and its value must be either a
+% number (e.g., 6.6 or |\cftdotsep|) or |\cftnodots| (to disable the dots).
+% The spacing
+% is in terms of \emph{math units} where there are 18mu to 1em.
+%
+% \DescribeMacro{\cftXpagefont}
+% This defines the font to be used for typesetting the page number. It
+% can be changed by |\renewcommand|.
+%
+% \DescribeMacro{\cftXafterpnum}
+% This macro is called after the page number has been typeset. Its default
+% is to do nothing. It can be changed by |\renewcommand|.
+%
+% \DescribeMacro{\cftsetindents}
+% The command
+% |\cftsetindents{|\meta{entry}|}{|\meta{indent}|}{|\meta{numwidth}|}|
+% sets the \meta{entry}'s \textit{indent} to the length \meta{indent} and its
+% \textit{numwidth} to the length \meta{numwidth}. The \meta{entry} argument
+% is the name of one of the standard entries (e.g., |subsection|) or the name of
+% entry that has been defined with the \Lpack{tocloft} package.
+% For example \\
+% |\cftsetindents{figure}{0em}{1.5em}| \\
+% will make figure entries left justified.
+%
+%
+% Various effects can be achieved by changing the definitions of |\cftXfont|,
+% |\cftXaftersnum|, |\cftXaftersnumb|, |\cftXleader| and |\cftXafterpnum|,
+% either singly or in combination.
+% For the sake of some examples, assume that we have the following initial
+% definitions
+% \begin{verbatim}
+% \newcommand{\cftXfont}{}
+% \newcommand{\cftXaftersnum}{}
+% \newcommand{\cftXaftersnumb}{}
+% \newcommand{\cftXleader}{\cftdotfill{\cftXdotsep}}
+% \newcommand{\cftXdotsep}{\cftdotsep}
+% \newcommand{\cftXpagefont}{}
+% \newcommand{\cftXafterpnum}{}
+% \end{verbatim}
+% (Note that the same font should be used for the title, leader and page
+% number to provide a coherent appearance).
+%
+% \begin{itemize}
+% \item To eliminate the dots in the leader:
+% \begin{verbatim}
+% \renewcommand{\cftXdotsep}{\cftnodots}
+% \end{verbatim}
+%
+% \item To put something (e.g., a name) before the title (number):
+% \begin{verbatim}
+% \renewcommand{\cftXpresnum}{SOMETHING }
+% \end{verbatim}
+%
+% \item To add a colon after the section number:
+% \begin{verbatim}
+% \renewcommand{\cftXaftersnum}{:}
+% \end{verbatim}
+%
+% \item To put something before the title number, add a colon after the
+% the title number, set everything in bold font,
+% and start the title text on the following line:
+% \begin{verbatim}
+% \renewcommand{\cftXfont}{\bfseries}
+% \renewcommand{\cftXleader}{\bfseries\cftdotfill{\cftXdotsep}}
+% \renewcommand{\cftXpagefont}{\bfseries}
+% \renewcommand{\cftXpresnum}{SOMETHING }
+% \renewcommand{\cftXaftersnum}{:}
+% \renewcommand{\cftXaftersnumb}{\\}
+% \end{verbatim}
+%
+% If you are adding text in the number box in addition to the number,
+% then you will probably have to increase the width of the box so that
+% multiline titles have a neat vertical alignment; changing box widths
+% usually implies that the indents will require modification as
+% well.\footnote{Lyndon Dudding (\texttt{lyndon.dudding@totalise.co.uk})
+% discovered this.}
+% One possible method of adjusting the box width for the above example
+% is:
+% \begin{verbatim}
+% \newlength{\mylen} % a "scratch" length
+% \settowidth{\mylen}{\bfseries\cftXpresnum\cftXaftersnum} % extra space
+% \addtolength{\cftXnumwidth}{\mylen} % add the extra space
+% \end{verbatim}
+%
+% \item To set the section numbers flushright:\footnote{With thanks to
+% David Holz (\texttt{lbda@earthlink.net}) for requesting this.}
+% \begin{verbatim}
+% \setlength{\mylen}{0.5em} % need some extra space at end of number
+% \renewcommand{\cftXpresnum}{\hfill} % note the double `l'
+% \renewcommand{\cftXaftersnum}{\hspace*{\mylen}}
+% \addtolength{\cftXnumwidth}{\mylen}
+% \end{verbatim}
+% In the above, the added initial |\hfill| in the box overrides the
+% final |\hfil| in the box, thus shifting everything to the right hand
+% end of the box. The extra space is so that the number is not typeset
+% immediately at the left of the title text.
+%
+% \item To set the entry ragged left (but this only looks good for single
+% line titles):
+% \begin{verbatim}
+% \renewcommand{\cftXfont}{\hfill\bfseries}
+% \renewcommand{\cftXleader}{}
+% \end{verbatim}
+%
+% \item To set the page number immediately after the entry text instead of at
+% the righthand margin:
+% \begin{verbatim}
+% \renewcommand{\cftXleader}{}
+% \renewcommand{\cftXafterpnum}{\cftparfillskip}
+% \renewcommand{\cftpnumalign}{l}
+% \end{verbatim}
+% By default the |\parfillskip| value is locally set to fill up the last
+% line of a paragraph. Just changing |\cftXleader| puts horrible interword
+% spaces into the last line of the title. The |\cftparfillskip|
+% command
+% is part of the \Lpack{tocloft} package and is provided just so that
+% the above effect can be achieved.
+% In addition, this is a good example of when it would be suitable to change the alignment of the page number box.
+%
+% \item To remove the space inserted between table and figure caption entries between chapters:
+% \begin{verbatim}
+% \begingroup
+% \renewcommand*{\addvspace}[1]{}
+% \listoftables
+% \listoffigures
+% \endgroup
+% \end{verbatim}
+% \end{itemize}
+%
+% \DescribeMacro{\cftpagenumbersoff}
+% \DescribeMacro{\cftpagenumberson}
+% The command |\cftpagenumbersoff{|\meta{entry}|}| will
+% eliminate the page numbers for \meta{entry} in the listing, where
+% \meta{entry} is the name of one of the standard
+% kinds of entries (e.g., |subsection|, or |figure| --- including |subfigure|
+% if the \Lpack{subfigure} package is used --- etc.), or the name of a
+% new entry defined with the \Lpack{tocloft} package.
+%
+% The command |\cftpagenumberson{|\meta{entry}|}| reverses
+% the effect of a corresponding |\cftpagenumbersoff|.
+%
+% One question that appeared on the \file{comp.text.tex} newsgroup asked
+% how to get the titles of Appendices list in the ToC \emph{without}
+% page numbers. Here is a simple way of doing it, assuming the document
+% has chapters
+% \begin{verbatim}
+% ...
+% \appendix
+% \addtocontents{toc}{\cftpagenumbersoff{chapter}}
+% \chapter{First appendix}
+% \end{verbatim}
+% If there are other chaptered headings to go into the ToC after the
+% appendices, then it will be necessary to do a similar \\
+% |\addtocontents{toc}{\cftpagenumberson{chapter}}| \\
+% to restore the page numbering in the ToC.
+%
+% Similarly, if you are using the \Lpack{subfigure} package you may
+% want to eliminate the page numbers for the subfigure captions. This
+% can be accomplished by: \\
+% |\cftpagenumbersoff{subfigure}|
+%
+% At this point, I leave it up to your ingenuity as to other effects that
+% you can achieve. However, if you come up with further examples, let me
+% know for possible inclusion in a later version of this document.
+%
+% \subsection{New list of\ldots}
+%
+% \DescribeMacro{\newlistof}
+% The command |\newlistof[|\meta{within}|]{|\meta{entry}|}{|\meta{ext}|}{|\meta{listofname}|}|
+% creates a new List of \ldots, and assorted commands to go along with it.
+%
+% The first required argument, \meta{entry} is used to define a new
+% counter called |entry|. The optional \meta{within} argument can
+% be used so that |entry| gets reset to one every time the counter called
+% |within| is changed. That is, the first two arguments are equivalent to
+% calling |\newcounter{|\meta{entry}|}[|\meta{within}|]|.
+%
+% The next argument, \meta{ext}, is the file extension for the new List of.
+% The last argument, \meta{listofname}, is the text for the heading of the
+% new List of. As an example:
+% \begin{verbatim}
+% \newcommand{\listanswername}{List of Answers}
+% \newlistof[chapter]{answer}{ans}{\listanswername}
+% \end{verbatim}
+% will create a new |answer| counter that will be reset at the start of each
+% |\chapter{...}|. Any answer titles will be written to the file
+% \file{jobname.ans} and |\listanswername| will be used as the list heading.
+% A command |\listofanswer| is created which can be used just like the
+% |\listoftables| or |tableofcontents| commands to generate a listing.
+% It is up to you to specify how the entries are put into the
+% new List of Answers. Here is a very simple example, remembering that an
+% |answer| counter has been created.
+% \begin{verbatim}
+% \newcommand{\answer}[1]{%
+% \refstepcounter{answer}
+% \par\noindent\textbf{Answer \theanswer. #1}
+% \addcontentsline{ans}{answer}{\protect\numberline{\theanswer}#1}\par}
+% \end{verbatim}
+% which, when used like: \\
+% |\answer{Hard} The \ldots| will print as:
+% \par\noindent\textbf{Answer 1. Hard}\par The \ldots
+%
+% As mentioned above, the |\newlistof| command creates several new
+% commands, most of which you should now be familiar with. For convenience,
+% assume that |\newlistof{X}{Z}{...}| has been issued; so |X| is the name
+% of the new counter and corresponds to the |X| in section~\ref{sec:entries},
+% and |Z| is the new file extension and corresponds to the |Z| in
+% section~\ref{sec:titles}. Then, among others, the following new commands
+% will be made available.
+%
+% The five commands, |\cftmarkZ|,
+% |\cftbeforeZtitleskip|,
+% |\cftafterZtitleskip|,
+% |\cftZtitlefont|, and
+% |\cftafterZtitle|,
+% are analogous to the commands of the same names
+% described in section~\ref{sec:titles}.
+%
+% \DescribeMacro{\listofX}
+% The command |\listofX| is similar to |\listoftables|, etc.,
+% in that it typesets
+% the new listing at the point where it is called.
+%
+% \DescribeMacro{\Zdepth}
+% The command |\Zdepth{|\meta{number}|}| is analogous to the standard
+% |\tocdepth{|\meta{number}|}| command, in that it specifies that entries
+% in the new listing should not be typeset if their numbering level
+% is greater
+% than \meta{number}. The default definition is
+% |\setcounter{Zdepth}{1}|.
+%
+% \DescribeMacro{\newlistentry}
+% The command
+% |\newlistentry[|\meta{within}|]{|\meta{entry}|}{|\meta{ext}|}{|\meta{level-1}|}| creates
+% new commands for typesetting a new kind of entry in a listing. It is used
+% internally by the |\newlistof| command but may be used independently.
+%
+% The first required argument, \meta{entry} is used to define a new
+% counter called |entry|. The optional \meta{within} argument can
+% be used so that |entry| gets reset to one every time the counter called
+% |within| is changed. That is, the first two arguments are equivalent to
+% calling |\newcounter{|\meta{entry}|}[|\meta{within}|]|.
+% The second required argument, \meta{ext}, is the file extension for the
+% entry listing.
+% The last argument, \meta{level-1}, is a number specifying the numbering
+% level minus one,
+% of the entry in a listing.
+% For example, the command \\
+% |\newlistof[chapter]{answer}{ans}{\listanswername}| \\
+% will call the command: \\
+% |\newlistentry[chapter]{answer}{ans}{0}| \\
+%
+%
+% Calling |\newlistentry| creates several new commands. Assuming that
+% it is called as |\newlistentry[within]{X}{Z}{N}|, where |X| and |Z| are
+% similar to the
+% previous uses of them, and |N| is an integer number, then the following
+% commands are made available.
+%
+% The set of commands |\cftbeforeXskip|,
+% |\cftXfont|,
+% |\cftXpresnum|,
+% |\cftXaftersnum|,
+% |\cftXaftersnumb|,
+% |\cftXleader|,
+% |\cftXdotsep|,
+% |\cftXpagefont|, and
+% |\cftXafterpnum|,
+% are analogous to the commands of the same names
+% described in section~\ref{sec:entries}. Their default values are also
+% as described earlier.
+%
+% The default values of |\cftXindent| and |\cftXnumwidth| are set according
+% to the value of the \meta{level-1} argument (i.e., |N| in this example).
+% For |N=0| the settings correspond to those for
+% sections in non-chaptered documents, as listed in Table~\ref{tab:indents}.
+% For |N=4| the settings correspond
+% to subparagraphs in non-chaptered documents, and for intermediate values
+% correspond to the matching sectional division in chaptered documents.
+% For values of |N| less than zero or greater than four,
+% or for non-default values, use the
+% |\cftsetindents| command to set the values.
+%
+%
+% \DescribeMacro{\l@X}
+% |\l@X| is an internal command that typesets an entry in the list, and
+% is defined in terms of the above |\cft*X*| commands. It will not typeset
+% an entry if |\Zdepth| is |N| or less, where |Z| is the listing's file
+% extension.
+%
+% \DescribeMacro{\theX}
+% The command |\theX| prints the value of the |X| counter. It is initially
+% defined so that it prints arabic numerals. If the optional \meta{within}
+% argument is used, |\theX| is defined as \\
+% |\renewcommand{\theX}{\thewithin.\arabic{X}}| otherwise as \\
+% |\renewcommand{\theX}{\arabic{X}}|.
+%
+%
+% As an example of the independent use of |\newlistentry|, the following
+% will set up for sub-answers.
+% \begin{verbatim}
+% \newlistentry[answer]{subanswer}{1}
+% \cftsetindents{subanswer}{1.5em}{3.0em}
+% \renewcommand{\thesubanswer}{\theanswer.\alph{subanswer}}
+% \newcommand{\subanswer}[1]{%
+% \refstepcounter{subanswer}
+% \par\textbf{\thesubanswer) #1}
+% \addcontentsline{ans}{subanswer{\protect\numberline{\thesubanswer}#1}}
+% \setcounter{ansdepth}{2}
+% \end{verbatim}
+% And then:
+% \begin{verbatim}
+% \answer{Harder} The \ldots
+% \subanswer{Reformulate the problem} It assists \ldots
+% \end{verbatim}
+% will be typeset as:
+% \par\noindent\textbf{Answer 2. Harder}\par The \ldots
+% \par\textbf{2.a) Reformulate the problem} It assists \ldots
+%
+% By default the answer entries will appear in the List of Answers listing
+% (typeset by the |\listofanswer| command).
+% In order to get the subanswers to appear,
+% the |\setcounter{ansdepth}{2}| command was used above.
+%
+% To turn off page numbering for the subanswers, do \\
+% |\cftpagenumbersoff{subanswer}|
+%
+% As another example of |\newlistentry|, suppose that an extra sectioning
+% division below |subparagraph| is required, called |subsubpara|.
+% The |\subsubpara| command itself can be defined via the LaTeX kernel
+% |\@startsection| command.
+% Also it is necessary to define a |\subsubparamark| macro,
+% a new |subsubpara| counter, a |\thesubsubpara| macro and a |\l@subsubpara|
+% macro. Using the \Lpack{tocloft} package's |\newlistentry|
+% takes care of most of these as shown below (remember
+% the caveats about commands with |@| signs in them).
+% \begin{verbatim}
+% \newcommand{\subsubpara}{\@startsection{subpara}%
+% {6}% level
+% {\parindent}% indent from left margin
+% {3.25ex \@plus1ex \@minus .2ex}% skip above heading
+% {-1em}% runin heading with 1em between title & text
+% {\normalfont\normalsize\itshape}% italic number and title
+% }
+% \newlistentry[subparagraph]{subsubpara}{toc}{5}
+% \cftsetindents{subsubpara}{14.0em}{7.0em}
+% \newcommand*{\subsubparamark}[1]{} % gobble heading mark
+% \end{verbatim}
+%
+%
+% Each List of\ldots uses a file to store the list entries, and these
+% files must remain open for writing throughout the document processing.
+% TeX has only a limited number of files that it can keep open, and this
+% puts a limit on the number of listings that can be used. For a document
+% that includes a ToC but no other extra ancillary files (e.g., no
+% index or bibliography output files) the maximum number of LoX's, including
+% a LoF and LoT, is no more than about eleven. If you try and create too many
+% new listings LaTeX will respond with the error message:
+% \begin{center}
+% |No room for a new write|
+% \end{center}
+% If you get such a message the only recourse is to redesign your document.
+%
+% The \Lpack{tocloft} package does not provide a simple means of specifying
+% new Lists of Floats or float environments.
+% For those, I recommend the \Lpack{ccaption} package~\cite{CCAPTION}.
+%
+% \subsection{Experimental utilities}
+%
+% The macros described in this section are even more experimental than
+% those described previously.
+%
+% \DescribeMacro{\cftchapterprecis}
+% Some old style novels, and even some modern text
+% books,\footnote{For example, Robert Sedgewick, \textit{Algorithms},
+% Addison-Wesley, 1983.} include a short synopsis of the contents of
+% the chapter either immediately
+% after the chapter heading or in the Toc, or in both places.
+%
+% The command |\cftchapterprecis{|\meta{text}|}| prints its argument
+% both at the
+% point in the document where it is called, and also adds it to the \file{.toc}
+% file. For example:
+% \begin{verbatim}
+% ...
+% \chapter{} % first chapter
+% \cftchapterprecis{Our hero is introduced; family tree; early days.}
+% ...
+% \end{verbatim}
+%
+% \DescribeMacro{\cftchapterprecishere}
+% \DescribeMacro{\cftchapterprecistoc}
+% The |\cftchapterprecis| command calls these two commands to print the
+% text in the document (the |\...here{|\meta{text}|}| command)
+% and to put it into the ToC (the |\...toc{|\meta{text}|}| command).
+% These can be used individually if required.
+%
+% Sometimes it may be desirable to make a change to the global parameters
+% for an individual entry. For example, a figure might be placed on
+% the end paper of a book (the inside of the front or back cover), and
+% this needs to be placed in a LoF with the page number set as, say
+% `inside front cover'. If `inside front cover' is typeset as an ordinary
+% page number it will stick out into the margin. Therefore, the parameters
+% for this particular entry need to be changed.
+%
+% \DescribeMacro{\cftlocalchange}
+% The command |\cftlocalchange{|\meta{file}|}{|\meta{pnumwidth}|}{|\meta{tocrmarg}|}|
+% will write an entry into \meta{file} to reset the global parameters.
+% The command should be called again after any special entry to reset
+% the parameters back to their usual values. Any fragile commands used
+% in the arguments must be protected.
+%
+% \DescribeMacro{\cftaddtitleline}
+% The command |\cftaddtitleline{|\meta{file}|}{|\meta{kind}|}{|\meta{title}|}{|\meta{page}|}|
+% will write a |\contentsline| entry into \meta{file} for a \meta{kind}
+% entry with title \meta{title} and page number \meta{page}. That is,
+% an entry is made of the form: \\
+% |\contentsline{kind}{title}{page}| \\
+% Any fragile commands used in the arguments must be protected.
+%
+% \DescribeMacro{\cftaddnumtitleline}
+% The command |\cftaddnumtitleline{|\meta{file}|}{|\meta{kind}|}{|\meta{num}|}{|\meta{title}|}{|\meta{page}|}|
+% is similar except that it also includes \meta{num} as the argument to
+% the |\numberline|. That is, an entry is made of the form: \\
+% |\contentsline{kind}{\numberline{num} title}{page}| \\
+% Any fragile commands used in the arguments must be protected.
+%
+% As an example of the use of these commands,
+% noting that the default \LaTeX{} values for
+% |\@pnumwidth| and |\@tocrmarg| are 1.55em and 2.55em respectively,
+% one might do the
+% following for a figure on the frontispiece page.
+% \begin{verbatim}
+% ...
+% % this is the frontispiece page with no number
+% % draw or import the picture (with no \caption)
+% \cftlocalchange{lof}{4em}{5em} % make pnumwidth big enough for
+% % frontispiece and change margin to suit
+% \cftaddtitleline{lof}{figure}{The title}{frontispiece}
+% \cftlocalchange{lof}{1.55em}{2.55em} % return to normal settings
+% ...
+% \end{verbatim}
+% Recall that a |\caption| command will put an entry in the \file{.lof}
+% file, which is not wanted here. If a caption is required, then you can
+% either craft one yourself or, assuming that your general captions are not
+% too exotic, use the |\legend| command from the
+% \Lpack{ccaption} package. If the illustration is numbered, use the
+% |\cftaddnumtitleline| command instead of |\cftaddtitleline|.
+%
+% \DescribeMacro{\cftZprehook}
+% \DescribeMacro{\cftZposthook}
+% It's surprisingly difficult to achieve multicolumn ToCs; can you guess what the problem is to write the following?
+% \begin{verbatim}
+% \begin{multicols}{2}
+% \tableofcontents
+% \end{multicols}
+% \end{verbatim}
+% Probably the easiest way to do it in regular \LaTeX{} is something like
+% \begin{verbatim}
+% \RequirePackage{multicol}
+% \AtBeginDocument{\addtocontents{toc}{\protect\begin{multicols}{2}}}
+% \AtEndDocument {\addtocontents{toc}{\protect\end {multicols}}}
+% \end{verbatim}
+% This method of writing to the |.toc| file is most flexible for trying to control the typesetting output within the table of contents.
+%
+% To make this \emph{slightly} easier with \Lpack{tocloft}, the following macros are available: \cs{cftZprehook} and \cs{cftZprehook}, where |Z| is |toc|, |lof|, |lot|, etc.
+% If these are defined, they insert material just before the actual typesetting of the entries of the table of contents and so on.
+% A multicolumn ToC can therefore be achieved with this:
+% \begin{verbatim}
+% \RequirePackage{multicol}
+% \renewcommand\cfttocprehook{\begin{multicols}{2}}
+% \renewcommand\cfttocposthook{\end{multicols}}
+% \end{verbatim}
+%
+% \subsection{Usage with other packages}
+%
+% The \Lpack{tocloft} and \Lpack{tocbibind} packages can be used together
+% in the same document. The \Lpack{tocbibind} package provides easy means
+% of adding document elements like the bibliography or the index to the
+% Table of Contents. However there are two known potential problems:
+% \begin{itemize}
+% \item The 1998/11/15 version of \Lpack{tocbibind} may give surprising
+% results if the |\toctocname|, |\toclotname| or |\toclofname| commands
+% have been used. You should consider getting the current version of
+% \Lpack{tocbibind}.
+% \item If the argument to the |\tocotherhead| command is other than one
+% of the normal sectioning divisions (i.e., part through to sub-paragraph)
+% such as |\tocotherhead{clause}|,
+% then this will almost certainly cause a problem (as the \Lpack{tocloft}
+% package will not know how to define the corresponding |\l@clause| command).
+% In such a case you will have to supply the appropriate macros yourself.
+% \end{itemize}
+%
+% \DescribeMacro{\@cftbsnum}
+% \DescribeMacro{\@cftasnum}
+% \DescribeMacro{\@cftasnumb}
+% Some packages, like the \Lpack{float} package by Anselm Lingnau,
+% enable the creation of other kinds of \textit{List of \ldots}.
+% The \Lpack{tocloft} package is only minimally able to change the
+% formatting of these,
+% principally because the packages are independent of each other and, in
+% the case of the \Lpack{float} package, new kinds of float environments
+% and their associated lists can be created on the fly at any point in
+% a document. Some aspects of the typesetting
+% are controlled by |\@cftbsnum|, |\@cftasnum| and |\@cftasnumb| commands.
+% These are equivalent to the |\cftXpresnum|, |\cftXaftersnum| and |\cftXaftersnumb|
+% commands described earlier. By default they are defined to do nothing, but
+% may be renewed to do something.
+%
+% The \Lpack{tocloft} and \Lpack{minitoc} packages have an unfortunate
+% interaction,\footnote{Discovered by Lyndon Dudding
+% (\texttt{lyndon.dudding@totalise.co.uk}).} which fortunately can be fixed.
+% In the normal course of events, when \Lpack{minitoc} is used in a chaptered
+% document it will typeset section
+% entries in the minitocs in bold font. If \Lpack{tocloft} is used in
+% conjunction with \Lpack{minitoc}, then the minitoc section entries are
+% typeset in the normal font, except for the page numbers which are in
+% bold font, while the ToC section entries are all in normal font.
+%
+% One cure, if you want the minitoc section entries to be all in normal
+% font is to put:
+% \begin{verbatim}
+% \renewcommand{\mtcSfont}{\small\normalfont}
+% \end{verbatim}
+% in the preamble.
+%
+% Otherwise, the cure is the following incantation:
+% \begin{verbatim}
+% \renewcommand{\cftsecfont}{\bfseries}
+% \renewcommand{\cftsecleader}{\bfseries\cftdotfill{\cftdotsep}}
+% \renewcommand{\cftsecpagefont}{\bfseries}
+% \end{verbatim}
+% To have the section entries in both the ToC and the minitocs in bold then
+% put the incantation in the preamble. To have only the minitoc section
+% entries in bold while the ToC entries are in the normal font,
+% put the incantation between the |\tableofcontents|
+% command and the first |\chapter| command.
+%
+%
+% In general, use with other packages that redefine any of the macros that
+% \Lpack{tocloft} also modifies is likely to be problematic.
+%
+% \section{The package code} \label{sec:code}
+%
+% \begin{macrocode}
+%<*usc>
+% \end{macrocode}
+%
+% In order to try and avoid name clashes with other packages, each internal
+% name will include the character string \texttt{@cft}.
+%
+% \begin{macro}{\@cftifundefined}
+% \changes{v2.3h}{2017/08/29}{Use internal ifundefined macro to fix conflict with fancyhdr}
+% Due to a conflict with how this package and fancyhdr checked for undefinedness.
+% \begin{macrocode}
+\newcommand\@cftifundefined[1]{%
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname #1\endcsname\relax
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@cftquit}
+% \begin{macro}{\if@cfthaschapter}
+% We will be using either chapter or section type headings for the ToC, etc.,
+% so we need to know which of these the document class supports.
+% \changes{v2.0}{2001/03/03}{Revamped chapter checking so the stdclsdv package no longer required}
+% \begin{macrocode}
+\newcommand{\@cftquit}{}
+\newif\if@cfthaschapter
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\if@cftkoma}
+% The \Lpack{koma} classes have different defaults than the standard classes,
+% so we need to know if a \Lpack{koma} class has been loaded.
+% \changes{v2.3}{2002/06/15}{Added check for a koma class}
+% \begin{macrocode}
+\newif\if@cftkoma
+\@cftkomafalse
+\@ifclassloaded{scrartcl}{\@cftkomatrue}{}
+\@ifclassloaded{scrreprt}{\@cftkomatrue}{}
+\@ifclassloaded{scrbook}{\@cftkomatrue}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@cfttitlesec}
+% \changes{v2.3f}{2013/04/30}{Added check for titlesec package}
+% \begin{macrocode}
+\newif\if@cfttitlesec
+\AtBeginDocument{\@ifpackageloaded{titlesec}{\@cfttitlesectrue}{}}
+% \end{macrocode}
+% \end{macro}
+%
+% Issue a warning if there are no recognised sectional divisions
+% and then skip the rest of the package code.
+% \begin{macrocode}
+\@cftifundefined{chapter}{%
+ \@cfthaschapterfalse
+ \@cftifundefined{section}{%
+ \PackageWarning{tocloft}%
+ {I don't recognize any sectional divisions so I'll do nothing}
+ \renewcommand{\@cftquit}{\endinput}
+ }{\PackageInfo{tocloft}{The document has section divisions}}
+ }{\@cfthaschaptertrue
+ \PackageInfo{tocloft}{The document has chapter divisions}}
+% \end{macrocode}
+% Perhaps quit now.
+% \begin{macrocode}
+\@cftquit
+% \end{macrocode}
+%
+% Use chapter style if |\if@cfthaschapter| is TRUE, otherwise section style.
+%
+% \begin{macro}{\if@cfttocbibind}
+% A flag that is set TRUE iff the \Lpack{tocbibind} package has been loaded.
+% The 1998/11/15 version of \Lpack{tocbibind} does not necessarily work well
+% with \Lpack{tocloft}.
+% \begin{macrocode}
+\newif\if@cfttocbibind
+\AtBeginDocument{%
+ \@ifpackageloaded{tocbibind}{\@cfttocbibindtrue}{\@cfttocbibindfalse}
+ \if@cfttocbibind
+ \@ifpackagelater{tocbibind}{1998/11/16}{}{%
+ \PackageWarning{tocloft}{%
+You are using a version of the tocbibind package\MessageBreak
+that is not compatible with tocloft.\MessageBreak
+The results may be surprising.\MessageBreak
+Consider installing the current version of tocbibind.}}
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@cftnctoc}
+% A boolean used to implement the \Lopt{titles} option. It is TRUE
+% if the ToC, LoT, LoF titles should use the default styles.
+% \begin{macrocode}
+\newif\if@cftnctoc\@cftnctocfalse
+\DeclareOption{titles}{\@cftnctoctrue}
+ %% \ProcessOptions\relax
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@cftsubfigopt}
+% A boolean used to implement the \Lopt{subfigure} option.
+% \begin{macrocode}
+\newif\if@cftsubfigopt\@cftsubfigoptfalse
+\DeclareOption{subfigure}{\@cftsubfigopttrue}
+% \end{macrocode}
+% \end{macro}
+%
+% Process the options.
+%
+% \begin{macrocode}
+
+\ProcessOptions\relax
+
+% \end{macrocode}
+%
+% \begin{macro}{\tocloftpagestyle}
+% \begin{macro}{\@cftpagestyle}
+% A user-level macro to set the pagestyle for the first page of the ToC, etc.
+% The default is the |plain| pagestyle.
+% \changes{v2.3}{2002/06/15}{Added \cs{tocloftpagestyle}}
+% \begin{macrocode}
+\newcommand{\tocloftpagestyle}[1]{%
+ \def\@cftpagestyle{\thispagestyle{#1}}}
+\tocloftpagestyle{plain}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\cftmarktoc}
+% \begin{macro}{\cftmarklof}
+% \begin{macro}{\cftmarklot}
+% These three macros set the style for running heads. They are initialised
+% to give the default appearance.
+% \changes{v2.3}{2002/06/15}{Marking commands are different for koma}
+% \begin{macrocode}
+\newcommand{\cftmarktoc}{%
+ \@mkboth{\MakeUppercase\contentsname}{\MakeUppercase\contentsname}}
+\newcommand{\cftmarklof}{%
+ \@mkboth{\MakeUppercase\listfigurename}{\MakeUppercase\listfigurename}}
+\newcommand{\cftmarklot}{%
+ \@mkboth{\MakeUppercase\listtablename}{\MakeUppercase\listtablename}}
+\if@cftkoma
+ \renewcommand{\cftmarktoc}{%
+ \@mkboth{\contentsname}{\contentsname}}
+ \renewcommand{\cftmarklof}{%
+ \@mkboth{\listfigurename}{\listfigurename}}
+ \renewcommand{\cftmarklot}{%
+ \@mkboth{\listtablename}{\listtablename}}
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@cfttocstart}
+% \begin{macro}{\@cfttocfinish}
+% Two macros to perform the actions at the beginning and end of the
+% |\tableofcontents| command (and friends). |\@cfttocstart| deals with
+% chaptered documents, ensuring that the ToC is typeset in a single
+% column (see \file{classes.dtx} for the original code).
+% These macros are also provided by the \Lpack{ccaption} package.
+% \begin{macrocode}
+\providecommand{\@cfttocstart}{%
+ \if@cfthaschapter
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse
+ \fi
+ \fi}
+% \end{macrocode}
+% |\@cfttocfinish| resets, if required, twocolumn typesetting.
+% \begin{macrocode}
+\providecommand{\@cfttocfinish}{%
+ \if@cfthaschapter
+ \if@restonecol\twocolumn\fi
+ \fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\phantomsection}
+% This is provided because the \Lopt{hyperref} package screws with
+% |\addcontentsline|.
+% \changes{v2.2}{2001/04/17}{Provided \cs{phantomsection}}
+% \changes{v2.2}{2001/04/17}{Added \cs{phantomsection} before \cs{addcontentsline} commands}
+% \begin{macrocode}
+\providecommand{\phantomsection}{}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@cftdobibtoc}
+% If the \Lpack{tocbibind} package has been used and it has
+% redefined |\tableofcontents| we need to cater for that. The contents
+% of the definition are defined in \Lpack{tocbibind}.
+% \begin{macrocode}
+\newcommand{\@cftdobibtoc}{%
+ \if@dotoctoc
+ \if@bibchapter
+ \phantomsection
+ \addcontentsline{toc}{chapter}{\contentsname}
+ \else
+ \phantomsection
+ \addcontentsline{toc}{\@tocextra}{\contentsname}
+ \fi
+ \fi}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\cftparskip}
+% The |\parskip| local to the ToC, etc., is set to the length |\cftparskip|.
+% \changes{v2.1}{2001/04/08}{Added \cs{cftparskip} for local parskip in ToC, etc.}
+% \begin{macrocode}
+\newlength{\cftparskip}
+\setlength{\cftparskip}{0pt}
+
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\tableofcontents}
+% This is a parameterised version of the default |\tableofcontents| command.
+% Each class has its own definition, but we have to cater for all classes
+% in one definition, hence some of the checks. The definition is
+% modified after all packages have been loaded.
+%
+% If the \Lopt{titles} option has been used, then the command is not modified.
+%
+% \begin{macrocode}
+\AtBeginDocument{%
+\if@cftnctoc\else
+ \renewcommand{\tableofcontents}{%
+ \@cfttocstart
+% \end{macrocode}
+% Ensure that any previous paragraph has been finished. Within a group set
+% the local paragraphing style and typeset the title.
+% \begin{macrocode}
+ \par
+ \begingroup
+ \parindent\z@ \parskip\cftparskip
+ \@cftmaketoctitle
+% \end{macrocode}
+% If \Lpack{tocbibind} has been used, then add the ToC
+% name to the ToC.
+% \begin{macrocode}
+ \if@cfttocbibind
+ \@cftdobibtoc
+ \fi
+% \end{macrocode}
+% Finally, read the \file{.toc} file and finish up.
+% \begin{macrocode}
+ \@starttoc{toc}%
+ \endgroup
+ \@cfttocfinish}
+\fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@cftmaketoctitle}
+% This command typesets the title for the ToC.
+% \changes{v2.3}{2002/06/15}{Added \cs{@secpenalty} to \cs{@cftmaketoctitle}}
+% \changes{v2.3}{2002/06/15}{Added \cs{@cftpagestyle} to \cs{@cftmaketoctitle}}
+% \begin{macrocode}
+\newcommand{\@cftmaketoctitle}{%
+ \addpenalty\@secpenalty
+ \if@cfthaschapter
+ \vspace*{\cftbeforetoctitleskip}%
+ \else
+ \vspace{\cftbeforetoctitleskip}%
+ \fi
+ \@cftpagestyle
+ {\interlinepenalty\@M
+ {\cfttoctitlefont\contentsname}{\cftaftertoctitle}%
+ \cftmarktoc
+ \par\nobreak
+ \vskip \cftaftertoctitleskip
+ \@afterheading}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\cftbeforetoctitleskip}
+% \begin{macro}{\cftaftertoctitleskip}
+% These two lengths control the vertical spacing before and after the
+% ToC title.
+% \begin{macrocode}
+\newlength{\cftbeforetoctitleskip}
+\newlength{\cftaftertoctitleskip}
+% \end{macrocode}
+% Their values depend on whether the document has chapters or not. In
+% chaptered documents the default ToC title is typeset as a |\chapter*|,
+% otherwise as a |\section*|.
+% \begin{macrocode}
+\if@cfthaschapter
+ \setlength{\cftbeforetoctitleskip}{50pt}
+ \setlength{\cftaftertoctitleskip}{40pt}
+\else
+ \setlength{\cftbeforetoctitleskip}{3.5ex \@plus 1ex \@minus .2ex}
+ \setlength{\cftaftertoctitleskip}{2.3ex \@plus.2ex}
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\cfttoctitlefont}
+% \begin{macro}{\cftaftertoctitle}
+% The ToC title is typeset in the style given by |\cfttoctitlefont|.
+% The macro |\cftaftertoctitle| is called after typesetting the title.
+% This is initialised to do nothing.
+% Both these macros can be redefined to do other things (e.g., adding
+% an |\hfill| to |\cfttoctitlefont| will make the title flushright).
+% \changes{v2.3}{2002/06/15}{koma changes the title fonts}
+% \begin{macrocode}
+\if@cfthaschapter
+ \newcommand{\cfttoctitlefont}{\normalfont\Huge\bfseries}
+ \if@cftkoma\renewcommand{\cfttoctitlefont}{\size@chapter\sectfont}\fi
+\else
+ \newcommand{\cfttoctitlefont}{\normalfont\Large\bfseries}
+ \if@cftkoma\renewcommand{\cfttoctitlefont}{\size@section\sectfont}\fi
+\fi
+\newcommand{\cftaftertoctitle}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\cftsetpnumwidth}
+% \begin{macro}{\cftsetrmarg}
+% Users commands for setting |\@pnumwidth| and |\@tocrmarg|.
+% \begin{macrocode}
+\newcommand{\cftsetpnumwidth}[1]{\renewcommand{\@pnumwidth}{#1}}
+\newcommand{\cftsetrmarg}[1]{\renewcommand{\@tocrmarg}{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\cftpnumalign}
+% \changes{v2.3f}{2013/05/02}{Add \cs{cftpnumalign} for page number alignment}
+% Alignment string (as input to \cs{makebox} for the page number box.
+% \begin{macrocode}
+\newcommand{\cftpnumalign}{r}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\cftdot}
+% \begin{macro}{\cftdotfill}
+% In the default ToC, a dotted line can be used to provide a leader between
+% a title and the page number. The definition of this leader is buried
+% in the |\@dottedtocline| command. The |\cftdotfill{|\meta{sep}|}|
+% command provides a parameterised version of the leader code, where
+% \meta{sep} is the separation between the dots in mu units.
+% The symbol used for the `dots' in the leader is given by the value
+% of |\cftdot|. These macros are also provided by the \Lpack{ccaption} package.
+% \begin{macrocode}
+\providecommand{\cftdot}{.}
+\providecommand{\cftdotfill}[1]{%
+ \def\@tempa{#1}%
+ \def\@tempb{\cftnodots}%
+ \ifx\@tempa\@tempb
+ \hfill
+ \else
+ \leaders\hbox{$\m@th\mkern #1 mu\hbox{\cftdot}\mkern #1 mu$}\hfill
+ \fi
+}
+% \end{macrocode}
+% \changes{v2.3f}{2013/04/30}{Specifically avoid placing dots when \cs{cftnodots} is used}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\cftdotsep}
+% \begin{macro}{\cftnodots}
+% |\cftdotsep| holds the default dot separation, and is also provided
+% by the \Lpack{ccaption} package.
+% If the kerns in |\cftdotfill| are large enough, then no dots will
+% be printed. |\cftnodots| should be `large enough'.
+% (Actually, |\cftnodots| is now used as a flag for a conditional branch, so its numerical value isn't as important now.)
+% \begin{macrocode}
+\providecommand{\cftdotsep}{4.5}
+\newcommand{\cftnodots}{5000}
+% \end{macrocode}
+% \changes{v2.3f}{2013/04/30}{Reduce \cs{cftnodots} to avoid very large dotsep sizes.}
+% \end{macro}
+% \end{macro}
+%
+% Now for the trickier bits regarding the typesetting of the ToC
+% entries.
+%
+% A \file{.toc} (also \file{.lof} and \file{.lot}) file consists
+% of a list of
+% |\contentsline{|\meta{kind}|}{|\meta{title}|}{|\meta{page}|}|
+% commands, where \meta{kind} is the kind of heading (e.g., |part| or
+% |section| or |figure|), \meta{title} is the title text (including the number),
+% and \meta{page} is the page number. The entries are inserted into the
+% file by calling the
+% |\addcontentsline{|\meta{file}|}{|\meta{kind}|}{|\meta{title}|}|
+% command, where \meta{file} is the file extension (e.g., |toc|, |lot|)
+% and the other arguments are the same as for the |\contentsline|
+% command. (Arbitrary stuff may also be put into the file via the
+% |\addtocontents{|\meta{file}|}{|\meta{text}|}| command).
+% The typesetting of the |\contentsline| entries is performed by
+% commands of the form |\l@kind|. The sectioning and captioning commands
+% call |\addcontentsline| to insert their titles into the \file{.toc}
+% etc., files.
+%
+% For the purposes at hand it is generally impossible to treat
+% the typesetting
+% of a title and its number separately, as both are bundled into the
+% \meta{title} argument within |\contentsline|. They could be handled
+% separately if the |\contentsline| command was suitably modified. If
+% this was done, then the |\addtocontentsline| command would also need
+% to be changed which would then require the sectioning and captioning
+% commands to be modified as well. This is certainly possible, but would
+% cause problems if any other package also modified the sectioning or
+% captioning commands, and there are several packages which do this.
+%
+% Having said this, for all but Part entries, the sectional number
+% is typeset via the |\numberline| command. We can take advantage of
+% this fact.
+%
+% I have taken the decision to not touch the |\contentsline| macro
+% and instead to do what can be done with it as it exists. That is, I will
+% modify the |\l@kind| commands. Essentially, my new definitions
+% consist of inlined versions of the code for |\@dottedtocline|.
+%
+% \begin{macro}{\cftparfillskip}
+% The |\l@kind| commands modify (locally) the value of |\parfillskip|.
+% |\cftparfillskip| is a copy of the default \textit{\TeX book}
+% |\parfillskip| definition.
+% \begin{macrocode}
+\newcommand{\cftparfillskip}{\parfillskip=0pt plus1fil}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\numberline}
+% \changes{v1.1}{2000/02/11}{Added \cs{@cftbsnum} to \cs{numberline}}
+% The purpose of the |\numberline{|\meta{secnum}|}| command is to typeset
+% \meta{secnum} left justified in a box of width |\@tempdima|. I redefine
+% it to add three additional parameters, namely |\@cftbsnum|,
+% |\@cftasnum| and |\@cftasnumb|
+% (see \file{ltsect.dtx} for the original
+% definition).
+% \begin{macrocode}
+\renewcommand{\numberline}[1]{%
+ \hb@xt@\@tempdima{\@cftbsnum #1\@cftasnum\hfil}\@cftasnumb}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@cftbsnum}
+% \begin{macro}{\@cftasnum}
+% \begin{macro}{\@cftasnumb}
+% \changes{v0.2b}{1999/03/07}{Added empty definitions for @cftasnum and @cftasnumb commands}
+% \changes{v1.1}{2000/02/11}{Added empty definition of \cs{@cftbsnum}}
+% Originally these were not defined but were |\let| to appropriate commands
+% in the |\l@...| commands, but they
+% have to be defined in case something unexpected calls |\numberline|,
+% for example through use of the \Lpack{float} package.\footnote{This bug
+% was discovered by Andrew Thurber when using the \Lpack{tocloft} and
+% \Lpack{algorithm} packages together.}
+% \begin{macrocode}
+\newcommand{\@cftbsnum}{}
+\newcommand{\@cftasnum}{}
+\newcommand{\@cftasnumb}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+%
+% \begin{macro}{\l@part}
+% \begin{macro}{\if@cftdopart}
+% \changes{v1.1}{2000/02/11}{Added \cs{@cftbsnum} and \cs{cftXpresnum} to
+% all \cs{\l@X} commands}
+% \changes{v1.1}{2000/02/11}{Added \cs{cftXpresnum} commands}
+% |\l@part{|\meta{title}|}{|\meta{page}|}| typesets the ToC entry for
+% a |part| heading. It is a parameterised copy of the default |\l@part|
+% (see \file{classes.dtx} for the original definition and the code
+% below for |\l@subsection| for an explanation of most of this
+% code). By default, Parts
+% (and Chapters) do not have dotted leaders. This package provides
+% for all entries to have dotted leaders.
+% \changes{v0.2a}{1999/01/24}{In article class, Part level is 0 not -1}
+% \changes{v2.0}{2001/03/03}{Checked directly for \cs{part} definition}
+% \changes{v2.3a}{2002/10/03}{Added \cs{cftpartpresnum} to \cs{l@part}}
+%
+% \begin{macrocode}
+\newif\if@cftdopart
+\newif\if@cfthaspart
+\@cftifundefined{part}{\@cfthaspartfalse}{\@cfthasparttrue}
+\if@cfthaspart
+\renewcommand*{\l@part}[2]{%
+ \@cftdopartfalse
+ \ifnum \c@tocdepth >-2\relax
+ \if@cfthaschapter
+ \@cftdoparttrue
+ \fi
+ \ifnum \c@tocdepth >\m@ne
+ \if@cfthaschapter\else
+ \@cftdoparttrue
+ \fi
+ \fi
+ \fi
+ \if@cftdopart
+ \if@cfthaschapter
+ \addpenalty{-\@highpenalty}%
+ \else
+ \addpenalty\@secpenalty
+ \fi
+ \addvspace{\cftbeforepartskip}%
+ \begingroup
+ {\leftskip \cftpartindent\relax
+ \rightskip \@tocrmarg
+ \parfillskip -\rightskip
+ \parindent \cftpartindent\relax\@afterindenttrue
+ \interlinepenalty\@M
+ \leavevmode
+ \@tempdima \cftpartnumwidth\relax
+ \let\@cftbsnum \cftpartpresnum
+ \let\@cftasnum \cftpartaftersnum
+ \let\@cftasnumb \cftpartaftersnumb
+ \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
+% \end{macrocode}
+% In default \LaTeX, the part ToC entry is written without \verb|\numberline|
+% and hence the `presnum' needs to be inserted manually.
+% In Koma-Script and titlesec (and probably others---let me know!), however, this is not the case.
+% \begin{macrocode}
+ {\cftpartfont \if@cftkoma\else\if@cfttitlesec\else\cftpartpresnum\fi\fi #1}%
+ \cftpartfillnum{#2}}
+ \nobreak
+ \if@cfthaschapter
+ \global\@nobreaktrue
+ \everypar{\global\@nobreakfalse\everypar{}}%
+ \else
+ \if@compatibility
+ \global\@nobreaktrue
+ \everypar{\global\@nobreakfalse\everypar{}}%
+ \fi
+ \fi
+ \endgroup
+ \fi}
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\cftbeforepartskip}
+% \begin{macro}{\cftpartnumwidth}
+% \begin{macro}{\cftpartfont}
+% \begin{macro}{\cftpartpresnum}
+% \begin{macro}{\cftpartaftersnum}
+% \begin{macro}{\cftpartaftersnumb}
+% \begin{macro}{\cftpartleader}
+% \begin{macro}{\cftpartdotsep}
+% \begin{macro}{\cftpartpagefont}
+% \begin{macro}{\cftpartafterpnum}
+% \begin{macro}{\cftpartindent}
+% \begin{macro}{\cftpartfillnum}
+% These are the user commands to control the typesetting of Part entries.
+% They are initialised to give the standard appearance.
+% \changes{v2.3a}{2002/10/03}{Deleted \cs{cftpartaftersnum} and \cs{cftpartaftersnumb}}
+% \changes{v2.3b}{2003/01/20}{Reinstated \cs{cftpartaftersnum} and \cs{cftpartaftersnumb}}
+% \begin{macrocode}
+\if@cfthaspart
+ \newlength{\cftbeforepartskip}
+ \setlength{\cftbeforepartskip}{2.25em \@plus\p@}
+ \newlength{\cftpartnumwidth}
+ \setlength{\cftpartnumwidth}{0em}
+ \newcommand{\cftpartfont}{\large\bfseries}
+ \newcommand{\cftpartpresnum}{}
+ \newcommand{\cftpartaftersnum}{}
+ \newcommand{\cftpartaftersnumb}{}
+ \newcommand{\cftpartleader}{\large\bfseries\cftdotfill{\cftpartdotsep}}
+ \newcommand{\cftpartdotsep}{\cftnodots}
+ \newcommand{\cftpartpagefont}{\large\bfseries}
+ \newcommand{\cftpartafterpnum}{}
+ \newlength{\cftpartindent}
+ \setlength{\cftpartindent}{0em}
+ \newcommand{\cftpartfillnum}[1]{%
+ {\cftpartleader}%
+ {\makebox[\@pnumwidth][\cftpnumalign]{\cftpartpagefont #1}\cftpartafterpnum\par}%
+ }
+% \end{macrocode}
+% \Lpack{koma} classes use some different settings.
+% \changes{v2.3}{2002/06/15}{koma has different part settings}
+% \begin{macrocode}
+ \if@cftkoma
+ \setlength{\cftpartnumwidth}{2em}
+ \renewcommand{\cftpartfont}{\sectfont\large}
+ \renewcommand{\cftpartpagefont}{\sectfont\large}
+ \fi
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\l@chapter}
+% |\l@chapter{|\meta{title}|}{|\meta{page}|}| typesets the ToC entry for
+% a |chapter| heading. It is a parameterised copy of the default |\l@chapter|
+% (see \file{classes.dtx} for the original definition). This only applies
+% to chaptered documents.
+% \begin{macrocode}
+\if@cfthaschapter
+\renewcommand*{\l@chapter}[2]{%
+ \ifnum \c@tocdepth >\m@ne
+ \addpenalty{-\@highpenalty}%
+ \vskip \cftbeforechapskip
+ {\leftskip \cftchapindent\relax
+ \rightskip \@tocrmarg
+ \parfillskip -\rightskip
+ \parindent \cftchapindent\relax\@afterindenttrue
+ \interlinepenalty\@M
+ \leavevmode
+ \@tempdima \cftchapnumwidth\relax
+ \let\@cftbsnum \cftchappresnum
+ \let\@cftasnum \cftchapaftersnum
+ \let\@cftasnumb \cftchapaftersnumb
+ \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
+ {\cftchapfont #1}\nobreak
+ \cftchapfillnum{#2}}%
+ \fi}%
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\cftbeforechapskip}
+% \begin{macro}{\cftchapindent}
+% \begin{macro}{\cftchapnumwidth}
+% \begin{macro}{\cftchapfont}
+% \begin{macro}{\cftchappresnum}
+% \begin{macro}{\cftchapaftersnum}
+% \begin{macro}{\cftchapaftersnumb}
+% \begin{macro}{\cftchapleader}
+% \begin{macro}{\cftchapdotsep}
+% \begin{macro}{\cftchappagefont}
+% \begin{macro}{\cftchapafterpnum}
+% \begin{macro}{\cftchapfillnum}
+% These are the user commands to control the typesetting of Chapter entries.
+% They are initialised to give the standard appearance.
+% \begin{macrocode}
+\if@cfthaschapter
+ \newlength{\cftbeforechapskip}
+ \setlength{\cftbeforechapskip}{1.0em \@plus\p@}
+ \newlength{\cftchapindent}
+ \setlength{\cftchapindent}{0em}
+ \newlength{\cftchapnumwidth}
+ \setlength{\cftchapnumwidth}{1.5em}
+ \newcommand{\cftchapfont}{\bfseries}
+ \newcommand{\cftchappresnum}{}
+ \newcommand{\cftchapaftersnum}{}
+ \newcommand{\cftchapaftersnumb}{}
+ \newcommand{\cftchapleader}{\bfseries\cftdotfill{\cftchapdotsep}}
+ \newcommand{\cftchapdotsep}{\cftnodots}
+ \newcommand{\cftchappagefont}{\bfseries}
+ \newcommand{\cftchapafterpnum}{}
+ \newcommand{\cftchapfillnum}[1]{%
+ {\cftchapleader}\nobreak
+ \makebox[\@pnumwidth][\cftpnumalign]{\cftchappagefont #1}\cftchapafterpnum\par
+ }
+% \end{macrocode}
+% \Lpack{koma} classes have different chapter settings.
+% \changes{v2.3}{2002/06/15}{koma has different chapter settings}
+% \begin{macrocode}
+ \if@cftkoma
+ \renewcommand{\cftchapfont}{\sectfont}
+ \fi
+\fi
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\l@section}
+% |\l@section{|\meta{title}|}{|\meta{page}|}| typesets the ToC entry for
+% a |section| heading. It is a parameterised copy of the default |\l@section|
+% (see \file{classes.dtx} for the original definition).
+% \begin{macrocode}
+\renewcommand*{\l@section}[2]{%
+ \ifnum \c@tocdepth >\z@
+ \if@cfthaschapter
+ \vskip \cftbeforesecskip
+ \else
+ \addpenalty\@secpenalty
+ \addvspace{\cftbeforesecskip}
+ \fi
+ {\leftskip \cftsecindent\relax
+ \rightskip \@tocrmarg
+ \parfillskip -\rightskip
+ \parindent \cftsecindent\relax\@afterindenttrue
+ \interlinepenalty\@M
+ \leavevmode
+ \@tempdima \cftsecnumwidth\relax
+ \let\@cftbsnum \cftsecpresnum
+ \let\@cftasnum \cftsecaftersnum
+ \let\@cftasnumb \cftsecaftersnumb
+ \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
+ {\cftsecfont #1}\nobreak
+ \cftsecfillnum{#2}}%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\cftbeforesecskip}
+% \begin{macro}{\cftsecindent}
+% \begin{macro}{\cftsecnumwidth}
+% \begin{macro}{\cftsecfont}
+% \begin{macro}{\cftsecpresnum}
+% \begin{macro}{\cftsecaftersnum}
+% \begin{macro}{\cftsecaftersnumb}
+% \begin{macro}{\cftsecleader}
+% \begin{macro}{\cftsecdotsep}
+% \begin{macro}{\cftsecpagefont}
+% \begin{macro}{\cftsecafterpnum}
+% \begin{macro}{\cftsecfillnum}
+% These are the user commands to control the typesetting of Section entries.
+% They are initialised to give the standard appearance.
+% \begin{macrocode}
+\newlength{\cftbeforesecskip}
+\newlength{\cftsecindent}
+\newlength{\cftsecnumwidth}
+\newcommand{\cftsecpresnum}{}
+\newcommand{\cftsecaftersnum}{}
+\newcommand{\cftsecaftersnumb}{}
+\if@cfthaschapter
+ \setlength{\cftbeforesecskip}{\z@ \@plus.2\p@}
+ \setlength{\cftsecindent}{1.5em}
+ \setlength{\cftsecnumwidth}{2.3em}
+ \newcommand{\cftsecfont}{\normalfont}
+ \newcommand{\cftsecleader}{\normalfont\cftdotfill{\cftsecdotsep}}
+ \newcommand{\cftsecdotsep}{\cftdotsep}
+ \newcommand{\cftsecpagefont}{\normalfont}
+\else
+ \setlength{\cftbeforesecskip}{1.0em \@plus\p@}
+ \setlength{\cftsecindent}{0em}
+ \setlength{\cftsecnumwidth}{1.5em}
+ \newcommand{\cftsecfont}{\bfseries}
+ \newcommand{\cftsecleader}{\bfseries\cftdotfill{\cftsecdotsep}}
+ \newcommand{\cftsecdotsep}{\cftnodots}
+ \newcommand{\cftsecpagefont}{\bfseries}
+\fi
+\newcommand{\cftsecafterpnum}{}
+\newcommand{\cftsecfillnum}[1]{%
+ {\cftsecleader}\nobreak
+ \makebox[\@pnumwidth][\cftpnumalign]{\cftsecpagefont #1}\cftsecafterpnum\par
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\l@subsection}
+% |\l@subsection{|\meta{title}|}{|\meta{page}|}| typesets the ToC entry for
+% a |subsection| heading. It is a parameterised copy of the default
+% |\l@subsection|
+% (see \file{classes.dtx} for the original definition).
+% \begin{macrocode}
+\renewcommand*{\l@subsection}[2]{%
+% \end{macrocode}
+% Only typeset the entry if it falls within the |tocdepth|.
+% \begin{macrocode}
+ \ifnum \c@tocdepth >\@ne
+% \end{macrocode}
+% Add some vertical space.
+% \begin{macrocode}
+ \vskip \cftbeforesubsecskip
+% \end{macrocode}
+% Start a group to keep paragraphing changes local. Set the |\leftskip|
+% to the entry's indentation.
+% \begin{macrocode}
+ {\leftskip \cftsubsecindent\relax
+% \end{macrocode}
+% Set the |\rightskip| to |\@tocrmarg| to leave room for the page number.
+% \begin{macrocode}
+ \rightskip \@tocrmarg
+% \end{macrocode}
+% Ensure that the last line of the entry will be filled. Setting
+% |\parfillskip| to a negative number prevents any overfull box messages.
+% \begin{macrocode}
+ \parfillskip -\rightskip
+% \end{macrocode}
+% Set the paragraph indent to the entry's indentation.
+% \begin{macrocode}
+ \parindent \cftsubsecindent\relax\@afterindenttrue
+% \end{macrocode}
+% Try and prevent breaks between lines in a multiple line entry.
+% \begin{macrocode}
+ \interlinepenalty\@M
+% \end{macrocode}
+% Make sure that we have left vertical mode.
+% \begin{macrocode}
+ \leavevmode
+% \end{macrocode}
+% Our version of |\numberline| expects that the width of the number box
+% is in |\@tempdima|, and that the three macros |\@cftbsnum|,
+% |\@cftasnum| and |\@cftasnumb|
+% are defined. We set all these to the values for this entry.
+% \begin{macrocode}
+ \@tempdima \cftsubsecnumwidth\relax
+ \let\@cftbsnum \cftsubsecpresnum
+ \let\@cftasnum \cftsubsecaftersnum
+ \let\@cftasnumb \cftsubsecaftersnumb
+% \end{macrocode}
+% Arrange that the (section number and) first line of the title is set
+% at the current indent, and any further lines are further indented.
+% \begin{macrocode}
+ \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
+% \end{macrocode}
+% Print the (number and) title, prohibiting any breaking.
+% \begin{macrocode}
+ {\cftsubsecfont #1}\nobreak
+% \end{macrocode}
+% Print the leader and the page number, and close the group.
+% \begin{macrocode}
+ \cftsubsecfillnum{#2}}%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\cftbeforesubsecskip}
+% \begin{macro}{\cftsubsecindent}
+% \begin{macro}{\cftsubsecnumwidth}
+% \begin{macro}{\cftsubsecfont}
+% \begin{macro}{\cftsubsecpresnum}
+% \begin{macro}{\cftsubsecaftersnum}
+% \begin{macro}{\cftsubsecaftersnumb}
+% \begin{macro}{\cftsubsecleader}
+% \begin{macro}{\cftsubsecdotsep}
+% \begin{macro}{\cftsubsecpagefont}
+% \begin{macro}{\cftsubsecafterpnum}
+% These are the user commands to control the typesetting of Sub-section entries.
+% They are initialised to give the standard appearance.
+% \begin{macrocode}
+\newlength{\cftbeforesubsecskip}
+ \setlength{\cftbeforesubsecskip}{\z@ \@plus.2\p@}
+\newlength{\cftsubsecindent}
+\newlength{\cftsubsecnumwidth}
+\if@cfthaschapter
+ \setlength{\cftsubsecindent}{3.8em}
+ \setlength{\cftsubsecnumwidth}{3.2em}
+\else
+ \setlength{\cftsubsecindent}{1.5em}
+ \setlength{\cftsubsecnumwidth}{2.3em}
+\fi
+\newcommand{\cftsubsecfont}{\normalfont}
+\newcommand{\cftsubsecpresnum}{}
+\newcommand{\cftsubsecaftersnum}{}
+\newcommand{\cftsubsecaftersnumb}{}
+\newcommand{\cftsubsecleader}{\normalfont\cftdotfill{\cftsubsecdotsep}}
+\newcommand{\cftsubsecdotsep}{\cftdotsep}
+\newcommand{\cftsubsecpagefont}{\normalfont}
+\newcommand{\cftsubsecafterpnum}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\cftsubsecfillnum}
+% |\cftsubsecfillnum{|\meta{page}|}| typesets the leader and the \meta{page}
+% number of a |subsection| entry.
+% First print the leader and then, with no break, set the page number
+% flushright in a box of width |\@pnumwidth|,
+% not forgetting to finish the paragraph.
+% \begin{macrocode}
+\newcommand{\cftsubsecfillnum}[1]{%
+ {\cftsubsecleader}\nobreak
+ \makebox[\@pnumwidth][\cftpnumalign]{\cftsubsecpagefont #1}\cftsubsecafterpnum\par
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l@subsubsection}
+% |\l@subsubsection{|\meta{title}|}{|\meta{page}|}| typesets the ToC entry for
+% a |subsubsection| heading. It is a parameterised copy of the default
+% |\l@subsubsection|
+% (see \file{classes.dtx} for the original definition).
+% \begin{macrocode}
+\renewcommand*{\l@subsubsection}[2]{%
+ \ifnum \c@tocdepth >\tw@
+ \vskip \cftbeforesubsubsecskip
+ {\leftskip \cftsubsubsecindent\relax
+ \rightskip \@tocrmarg
+ \parfillskip -\rightskip
+ \parindent \cftsubsubsecindent\relax\@afterindenttrue
+ \interlinepenalty\@M
+ \leavevmode
+ \@tempdima \cftsubsubsecnumwidth\relax
+ \let\@cftbsnum \cftsubsubsecpresnum
+ \let\@cftasnum \cftsubsubsecaftersnum
+ \let\@cftasnumb \cftsubsubsecaftersnumb
+ \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
+ {\cftsubsubsecfont #1}\nobreak
+ \cftsubsubsecfillnum{#2}}%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\cftbeforesubsubsecskip}
+% \begin{macro}{\cftsubsubsecindent}
+% \begin{macro}{\cftsubsubsecnumwidth}
+% \begin{macro}{\cftsubsubsecfont}
+% \begin{macro}{\cftsubsubsecpresnum}
+% \begin{macro}{\cftsubsubsecaftersnum}
+% \begin{macro}{\cftsubsubsecaftersnumb}
+% \begin{macro}{\cftsubsubsecleader}
+% \begin{macro}{\cftsubsubsecdotsep}
+% \begin{macro}{\cftsubsubsecpagefont}
+% \begin{macro}{\cftsubsubsecafterpnum}
+% \begin{macro}{\cftsubsubsecfillnum}
+% These are the user commands to control the typesetting of Sub-sub-section entries.
+% They are initialised to give the standard appearance.
+% \begin{macrocode}
+\newlength{\cftbeforesubsubsecskip}
+ \setlength{\cftbeforesubsubsecskip}{\z@ \@plus.2\p@}
+\newlength{\cftsubsubsecindent}
+\newlength{\cftsubsubsecnumwidth}
+\if@cfthaschapter
+ \setlength{\cftsubsubsecindent}{7.0em}
+ \setlength{\cftsubsubsecnumwidth}{4.1em}
+\else
+ \setlength{\cftsubsubsecindent}{3.8em}
+ \setlength{\cftsubsubsecnumwidth}{3.2em}
+\fi
+\newcommand{\cftsubsubsecfont}{\normalfont}
+\newcommand{\cftsubsubsecpresnum}{}
+\newcommand{\cftsubsubsecaftersnum}{}
+\newcommand{\cftsubsubsecaftersnumb}{}
+\newcommand{\cftsubsubsecleader}{\normalfont\cftdotfill{\cftsubsubsecdotsep}}
+\newcommand{\cftsubsubsecdotsep}{\cftdotsep}
+\newcommand{\cftsubsubsecpagefont}{\normalfont}
+\newcommand{\cftsubsubsecafterpnum}{}
+\newcommand{\cftsubsubsecfillnum}[1]{%
+ {\cftsubsubsecleader}\nobreak
+ \makebox[\@pnumwidth][\cftpnumalign]{\cftsubsubsecpagefont #1}\cftsubsubsecafterpnum\par
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\l@paragraph}
+% |\l@paragraph{|\meta{title}|}{|\meta{page}|}| typesets the ToC entry for
+% a |paragraph| heading. It is a parameterised copy of the default
+% |\l@paragraph|
+% (see \file{classes.dtx} for the original definition).
+% \begin{macrocode}
+\renewcommand*{\l@paragraph}[2]{%
+ \ifnum \c@tocdepth >3\relax
+ \vskip \cftbeforeparaskip
+ {\leftskip \cftparaindent\relax
+ \rightskip \@tocrmarg
+ \parfillskip -\rightskip
+ \parindent \cftparaindent\relax\@afterindenttrue
+ \interlinepenalty\@M
+ \leavevmode
+ \@tempdima \cftparanumwidth\relax
+ \let\@cftbsnum \cftparapresnum
+ \let\@cftasnum \cftparaaftersnum
+ \let\@cftasnumb \cftparaaftersnumb
+ \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
+ {\cftparafont #1}\nobreak
+ \cftparafillnum{#2}}%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\cftbeforeparaskip}
+% \begin{macro}{\cftparaindent}
+% \begin{macro}{\cftparanumwidth}
+% \begin{macro}{\cftparafont}
+% \begin{macro}{\cftparapresnum}
+% \begin{macro}{\cftparaaftersnum}
+% \begin{macro}{\cftparaaftersnumb}
+% \begin{macro}{\cftparaleader}
+% \begin{macro}{\cftparadotsep}
+% \begin{macro}{\cftparapagefont}
+% \begin{macro}{\cftparaafterpnum}
+% \begin{macro}{\cftparafillnum}
+% These are the user commands to control the typesetting of Paragraph entries.
+% They are initialised to give the standard appearance.
+% \begin{macrocode}
+\newlength{\cftbeforeparaskip}
+ \setlength{\cftbeforeparaskip}{\z@ \@plus.2\p@}
+\newlength{\cftparaindent}
+\newlength{\cftparanumwidth}
+\if@cfthaschapter
+ \setlength{\cftparaindent}{10em}
+ \setlength{\cftparanumwidth}{5em}
+\else
+ \setlength{\cftparaindent}{7.0em}
+ \setlength{\cftparanumwidth}{4.1em}
+\fi
+\newcommand{\cftparafont}{\normalfont}
+\newcommand{\cftparapresnum}{}
+\newcommand{\cftparaaftersnum}{}
+\newcommand{\cftparaaftersnumb}{}
+\newcommand{\cftparaleader}{\normalfont\cftdotfill{\cftparadotsep}}
+\newcommand{\cftparadotsep}{\cftdotsep}
+\newcommand{\cftparapagefont}{\normalfont}
+\newcommand{\cftparaafterpnum}{}
+\newcommand{\cftparafillnum}[1]{%
+ {\cftparaleader}\nobreak
+ \makebox[\@pnumwidth][\cftpnumalign]{\cftparapagefont #1}\cftparaafterpnum\par
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\l@subparagraph}
+% |\l@subparagraph{|\meta{title}|}{|\meta{page}|}| typesets the ToC entry for
+% a |subparagraph| heading. It is a parameterised copy of the default
+% |\l@subparagraph|
+% (see \file{classes.dtx} for the original definition).
+% \begin{macrocode}
+\renewcommand*{\l@subparagraph}[2]{%
+ \ifnum \c@tocdepth >4\relax
+ \vskip \cftbeforesubparaskip
+ {\leftskip \cftsubparaindent\relax
+ \rightskip \@tocrmarg
+ \parfillskip -\rightskip
+ \parindent \cftsubparaindent\relax\@afterindenttrue
+ \interlinepenalty\@M
+ \leavevmode
+ \@tempdima \cftsubparanumwidth\relax
+ \let\@cftbsnum \cftsubparapresnum
+ \let\@cftasnum \cftsubparaaftersnum
+ \let\@cftasnumb \cftsubparaaftersnumb
+ \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
+ {\cftsubparafont #1}\nobreak
+ \cftsubparafillnum{#2}}%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\cftbeforesubparaskip}
+% \begin{macro}{\cftsubparaindent}
+% \begin{macro}{\cftsubparanumwidth}
+% \begin{macro}{\cftsubparafont}
+% \begin{macro}{\cftsubparapresnum}
+% \begin{macro}{\cftsubparaaftersnum}
+% \begin{macro}{\cftsubparaaftersnumb}
+% \begin{macro}{\cftsubparaleader}
+% \begin{macro}{\cftsubparadotsep}
+% \begin{macro}{\cftsubparapagefont}
+% \begin{macro}{\cftsubparaafterpnum}
+% \begin{macro}{\cftsubparafillnum}
+% These are the user commands to control the typesetting of Sub-paragraph entries.
+% They are initialised to give the standard appearance.
+% \begin{macrocode}
+\newlength{\cftbeforesubparaskip}
+ \setlength{\cftbeforesubparaskip}{\z@ \@plus.2\p@}
+\newlength{\cftsubparaindent}
+\newlength{\cftsubparanumwidth}
+\if@cfthaschapter
+ \setlength{\cftsubparaindent}{12em}
+ \setlength{\cftsubparanumwidth}{6em}
+\else
+ \setlength{\cftsubparaindent}{10em}
+ \setlength{\cftsubparanumwidth}{5em}
+\fi
+\newcommand{\cftsubparafont}{\normalfont}
+\newcommand{\cftsubparapresnum}{}
+\newcommand{\cftsubparaaftersnum}{}
+\newcommand{\cftsubparaaftersnumb}{}
+\newcommand{\cftsubparaleader}{\normalfont\cftdotfill{\cftsubparadotsep}}
+\newcommand{\cftsubparadotsep}{\cftdotsep}
+\newcommand{\cftsubparapagefont}{\normalfont}
+\newcommand{\cftsubparaafterpnum}{}
+\newcommand{\cftsubparafillnum}[1]{%
+ {\cftsubparaleader}\nobreak
+ \makebox[\@pnumwidth][\cftpnumalign]{\cftsubparapagefont #1}\cftsubparaafterpnum\par
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\@cftdobiblof}
+% If the \Lpack{tocbibind} package has been used and it has
+% redefined |\listoffigures| we need to cater for that. The contents
+% of the definition are defined in \Lpack{tocbibind}.
+% \begin{macrocode}
+\newcommand{\@cftdobiblof}{%
+ \if@dotoclof
+ \if@bibchapter
+ \phantomsection
+ \addcontentsline{toc}{chapter}{\listfigurename}
+ \else
+ \phantomsection
+ \addcontentsline{toc}{\@tocextra}{\listfigurename}
+ \fi
+ \fi}
+
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\listoffigures}
+% This is a parameterised version of the default |\listoffigures| command.
+% The changes are postponed until after all packages have been loaded.
+% Each class has its own definition, but we have to cater for all classes
+% in one definition, hence some of the checks. First, perform the default
+% checks for multicolumns. (Do nothing if \Lopt{titles} option is used).
+% \begin{macrocode}
+\AtBeginDocument{%
+\if@cftnctoc\else
+\renewcommand{\listoffigures}{%
+ \@cfttocstart
+% \end{macrocode}
+% Ensure that any previous paragraph has been finished. Within a group set
+% the local paragraphing style. Typeset the title and then do the contents
+% of the \file{.lof} file.
+% \begin{macrocode}
+ \par
+ \begingroup
+ \parindent\z@ \parskip\cftparskip
+ \@cftmakeloftitle
+ \if@cfttocbibind
+ \@cftdobiblof
+ \fi
+ \@starttoc{lof}%
+ \endgroup
+% \end{macrocode}
+% Finally, restore any multicolumn typesetting.
+% \begin{macrocode}
+ \@cfttocfinish}%
+\fi
+}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@cftmakeloftitle}
+% This command typesets the title for the LoF.
+% \changes{v2.3}{2002/06/15}{Added \cs{@secpenalty} to \cs{cftmakeloftitle}}
+% \changes{v2.3}{2002/06/15}{Added \cs{@cftpagestyle} to \cs{cftmakeloftitle}}
+% \begin{macrocode}
+\newcommand{\@cftmakeloftitle}{%
+ \addpenalty\@secpenalty
+ \if@cfthaschapter
+ \vspace*{\cftbeforeloftitleskip}
+ \else
+ \vspace{\cftbeforeloftitleskip}
+ \fi
+ \@cftpagestyle
+ {\interlinepenalty\@M
+ {\cftloftitlefont\listfigurename}{\cftafterloftitle}
+ \cftmarklof
+ \par\nobreak
+ \vskip \cftafterloftitleskip
+ \@afterheading}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\cftbeforeloftitleskip}
+% \begin{macro}{\cftafterloftitleskip}
+% These two lengths control the vertical spacing before and after the
+% LoF title.
+% \begin{macrocode}
+\newlength{\cftbeforeloftitleskip}
+\newlength{\cftafterloftitleskip}
+% \end{macrocode}
+% Their values depend on whether the document has chapters or not. In
+% chaptered documents the default LoF title is typeset as a |\chapter*|,
+% otherwise as a |\section*|.
+% \begin{macrocode}
+\if@cfthaschapter
+ \setlength{\cftbeforeloftitleskip}{50pt}
+ \setlength{\cftafterloftitleskip}{40pt}
+\else
+ \setlength{\cftbeforeloftitleskip}{3.5ex \@plus 1ex \@minus .2ex}
+ \setlength{\cftafterloftitleskip}{2.3ex \@plus.2ex}
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\cftloftitlefont}
+% \begin{macro}{\cftafterloftitle}
+% The LoF title is typeset in the style given by |\cftloftitlefont|.
+% The macro |\cftafterloftitle| is called after typesetting the title.
+% This is initialised to do nothing.
+% Both these macros can be redefined to do other things (e.g., adding
+% an |\hfill| to |\cftloftitlefont| will make the title flushright).
+% \changes{v2.3}{2002/06/15}{koma has different settings for LoF titles}
+% \begin{macrocode}
+\if@cfthaschapter
+ \newcommand{\cftloftitlefont}{\normalfont\Huge\bfseries}
+ \if@cftkoma\renewcommand{\cftloftitlefont}{\size@chapter\sectfont}\fi
+\else
+ \newcommand{\cftloftitlefont}{\normalfont\Large\bfseries}
+ \if@cftkoma\renewcommand{\cftloftitlefont}{\size@section\sectfont}\fi
+\fi
+\newcommand{\cftafterloftitle}{}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\l@figure}
+% |\l@figure{|\meta{title}|}{|\meta{page}|}| typesets the LoF entry for
+% a |figure| caption heading. It is a parameterised copy of the default
+% |\l@figure|
+% (see \file{classes.dtx} for the original definition).
+% \begin{macrocode}
+\renewcommand*{\l@figure}[2]{%
+ \ifnum \c@lofdepth >\z@
+ \vskip \cftbeforefigskip
+ {\leftskip \cftfigindent\relax
+ \rightskip \@tocrmarg
+ \parfillskip -\rightskip
+ \parindent \cftfigindent\relax\@afterindenttrue
+ \interlinepenalty\@M
+ \leavevmode
+ \@tempdima \cftfignumwidth\relax
+ \let\@cftbsnum \cftfigpresnum
+ \let\@cftasnum \cftfigaftersnum
+ \let\@cftasnumb \cftfigaftersnumb
+ \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
+ {\cftfigfont #1}\nobreak
+ \cftfigfillnum{#2}}%
+ \fi
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\cftbeforefigskip}
+% \begin{macro}{\cftfigindent}
+% \begin{macro}{\cftfignumwidth}
+% \begin{macro}{\cftfigfont}
+% \begin{macro}{\cftfigpresnum}
+% \begin{macro}{\cftfigaftersnum}
+% \begin{macro}{\cftfigaftersnumb}
+% \begin{macro}{\cftfigleader}
+% \begin{macro}{\cftfigdotsep}
+% \begin{macro}{\cftfigpagefont}
+% \begin{macro}{\cftfigafterpnum}
+% \begin{macro}{\cftfigfillnum}
+% These are the user commands to control the typesetting of Figure caption entries.
+% They are initialised to give the standard appearance.
+% \begin{macrocode}
+\newlength{\cftbeforefigskip}
+ \setlength{\cftbeforefigskip}{\z@ \@plus.2\p@}
+\newlength{\cftfigindent}
+ \setlength{\cftfigindent}{1.5em}
+\newlength{\cftfignumwidth}
+ \setlength{\cftfignumwidth}{2.3em}
+\newcommand{\cftfigfont}{\normalfont}
+\newcommand{\cftfigpresnum}{}
+\newcommand{\cftfigaftersnum}{}
+\newcommand{\cftfigaftersnumb}{}
+\newcommand{\cftfigleader}{\normalfont\cftdotfill{\cftfigdotsep}}
+\newcommand{\cftfigdotsep}{\cftdotsep}
+\newcommand{\cftfigpagefont}{\normalfont}
+\newcommand{\cftfigafterpnum}{}
+\newcommand{\cftfigfillnum}[1]{%
+ {\cftfigleader}\nobreak
+ \makebox[\@pnumwidth][\cftpnumalign]{\cftfigpagefont #1}\cftfigafterpnum\par
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{lofdepth}
+% \begin{macro}{lotdepth}
+% The counters |lofdepth| and |lotdepth| are defined by the
+% \Lpack{subfigure} package.
+% Define them here if that package is not used.
+% \begin{macrocode}
+\if@cftsubfigopt\else
+ \newcounter{lofdepth}\setcounter{lofdepth}{1}
+ \newcounter{lotdepth}\setcounter{lotdepth}{1}
+\fi
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@cftdobiblot}
+% If the \Lpack{tocbibind} package has been used and it has
+% redefined |\listoftables| we need to cater for that. The contents
+% of the definition are defined in \Lpack{tocbibind}.
+% \begin{macrocode}
+\newcommand{\@cftdobiblot}{%
+ \if@dotoclot
+ \if@bibchapter
+ \phantomsection
+ \addcontentsline{toc}{chapter}{\listtablename}
+ \else
+ \phantomsection
+ \addcontentsline{toc}{\@tocextra}{\listtablename}
+ \fi
+ \fi}
+
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\listoftables}
+% This is a parameterised version of the default |\listoftables| command.
+% The changes are postponed until after all packages have been loaded.
+% Each class has its own definition, but we have to cater for all classes
+% in one definition, hence some of the checks. First, perform the default
+% checks for multicolumns. (Do nothing if the \Lopt{titles} option has
+% been used).
+% \begin{macrocode}
+\AtBeginDocument{%
+\if@cftnctoc\else
+\renewcommand{\listoftables}{%
+ \@cfttocstart
+% \end{macrocode}
+% Ensure that any previous paragraph has been finished. Within a group set
+% the local paragraphing style. Typeset the title and then do the contents
+% of the \file{.lot} file.
+% \begin{macrocode}
+ \par
+ \begingroup
+ \parindent\z@ \parskip\cftparskip
+ \@cftmakelottitle
+ \if@cfttocbibind
+ \@cftdobiblot
+ \fi
+ \@starttoc{lot}%
+ \endgroup
+% \end{macrocode}
+% Finally, restore any multicolumn typesetting.
+% \begin{macrocode}
+ \@cfttocfinish}%
+\fi
+}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@cftmakelottitle}
+% This command typesets the title for the LoT.
+% \changes{v2.3}{2002/06/15}{Added \cs{@secpenalty} to \cs{@cftmakelottitle}}
+% \changes{v2.3}{2002/06/15}{Added \cs{@cftpagestyle} to \cs{@cftmakelottitle}}
+% \begin{macrocode}
+\newcommand{\@cftmakelottitle}{%
+ \addpenalty\@secpenalty
+ \if@cfthaschapter
+ \vspace*{\cftbeforelottitleskip}
+ \else
+ \vspace{\cftbeforelottitleskip}
+ \fi
+ \@cftpagestyle
+ {\interlinepenalty\@M
+ {\cftlottitlefont\listtablename}{\cftafterlottitle}
+ \cftmarklot
+ \par\nobreak
+ \vskip \cftafterlottitleskip
+ \@afterheading}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\cftbeforelottitleskip}
+% \begin{macro}{\cftafterlottitleskip}
+% These two lengths control the vertical spacing before and after the
+% LoT title.
+% \begin{macrocode}
+\newlength{\cftbeforelottitleskip}
+\newlength{\cftafterlottitleskip}
+% \end{macrocode}
+% Their values depend on whether the document has chapters or not. In
+% chaptered documents the default LoT title is typeset as a |\chapter*|,
+% otherwise as a |\section*|.
+% \begin{macrocode}
+\if@cfthaschapter
+ \setlength{\cftbeforelottitleskip}{50pt}
+ \setlength{\cftafterlottitleskip}{40pt}
+\else
+ \setlength{\cftbeforelottitleskip}{3.5ex \@plus 1ex \@minus .2ex}
+ \setlength{\cftafterlottitleskip}{2.3ex \@plus.2ex}
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\cftlottitlefont}
+% \begin{macro}{\cftafterlottitle}
+% The LoT title is typeset in the style given by |\cftlottitlefont|.
+% The macro |\cftafterlottitle| is called after typesetting the title.
+% This is initialised to do nothing.
+% Both these macros can be redefined to do other things (e.g., adding
+% an |\hfill| to |\cftlottitlefont| will make the title flushright).
+% \changes{v2.3}{2002/06/15}{koma has different settings for LoT titles}
+% \begin{macrocode}
+\if@cfthaschapter
+ \newcommand{\cftlottitlefont}{\normalfont\Huge\bfseries}
+ \if@cftkoma\renewcommand{\cftlottitlefont}{\size@chapter\sectfont}\fi
+\else
+ \newcommand{\cftlottitlefont}{\normalfont\Large\bfseries}
+ \if@cftkoma\renewcommand{\cftlottitlefont}{\size@section\sectfont}\fi
+\fi
+\newcommand{\cftafterlottitle}{}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\l@table}
+% |\l@table{|\meta{title}|}{|\meta{page}|}| typesets the LoT entry for
+% a |table| caption heading. It is a parameterised copy of the default
+% |\l@table|
+% (see \file{classes.dtx} for the original definition).
+% \begin{macrocode}
+\renewcommand*{\l@table}[2]{%
+ \ifnum\c@lotdepth >\z@
+ \vskip \cftbeforetabskip
+ {\leftskip \cfttabindent\relax
+ \rightskip \@tocrmarg
+ \parfillskip -\rightskip
+ \parindent \cfttabindent\relax\@afterindenttrue
+ \interlinepenalty\@M
+ \leavevmode
+ \@tempdima \cfttabnumwidth\relax
+ \let\@cftbsnum \cfttabpresnum
+ \let\@cftasnum \cfttabaftersnum
+ \let\@cftasnumb \cfttabaftersnumb
+ \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
+ {\cfttabfont #1}\nobreak
+ \cfttabfillnum{#2}}%
+ \fi
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\cftbeforetabskip}
+% \begin{macro}{\cfttabindent}
+% \begin{macro}{\cfttabnumwidth}
+% \begin{macro}{\cfttabfont}
+% \begin{macro}{\cfttabpresnum}
+% \begin{macro}{\cfttabaftersnum}
+% \begin{macro}{\cfttabaftersnumb}
+% \begin{macro}{\cfttableader}
+% \begin{macro}{\cfttabdotsep}
+% \begin{macro}{\cfttabpagefont}
+% \begin{macro}{\cfttabafterpnum}
+% \begin{macro}{\cfttabfillnum}
+% These are the user commands to control the typesetting of Table caption entries.
+% They are initialised to give the standard appearance.
+% \begin{macrocode}
+\newlength{\cftbeforetabskip}
+ \setlength{\cftbeforetabskip}{\z@ \@plus.2\p@}
+\newlength{\cfttabindent}
+ \setlength{\cfttabindent}{1.5em}
+\newlength{\cfttabnumwidth}
+ \setlength{\cfttabnumwidth}{2.3em}
+\newcommand{\cfttabfont}{\normalfont}
+\newcommand{\cfttabpresnum}{}
+\newcommand{\cfttabaftersnum}{}
+\newcommand{\cfttabaftersnumb}{}
+\newcommand{\cfttableader}{\normalfont\cftdotfill{\cfttabdotsep}}
+\newcommand{\cfttabdotsep}{\cftdotsep}
+\newcommand{\cfttabpagefont}{\normalfont}
+\newcommand{\cfttabafterpnum}{}
+\newcommand{\cfttabfillnum}[1]{%
+ {\cfttableader}\nobreak
+ \makebox[\@pnumwidth][\cftpnumalign]{\cfttabpagefont #1}\cfttabafterpnum\par
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Support for the \Lpack{subfigure} package}
+% \changes{v1.1}{2000/02/12}{Added subfigure support}
+%
+% The code for supporting the \Lpack{subfigure} package is, in all
+% essentials, the same as that for the figure and table captions; only the
+% names are changed. However, the code need only be executed if the
+% \Lpack{subfigure} package is actually loaded.
+%
+% \begin{macro}{\@cftl@subfig}
+% This command redefines the |\l@subfigure| command.
+% \begin{macrocode}
+\newcommand{\@cftl@subfig}{%
+% \end{macrocode}
+% \begin{macro}{\l@subfigure}
+% |\l@subfigure{|\meta{title}|}{|\meta{page}|}| typesets the LoF entry for
+% a |subfigure| caption heading. It is essentially the same as the
+% parameterised code for |\l@figure| except that account has to be taken
+% of |lofdepth|.
+% \begin{macrocode}
+\renewcommand*{\l@subfigure}[2]{%
+ \ifnum \c@lofdepth > \toclevel@subfigure
+ \vskip \cftbeforesubfigskip
+ {\leftskip \cftsubfigindent\relax
+ \rightskip \@tocrmarg
+ \parfillskip -\rightskip
+ \parindent \cftsubfigindent\relax\@afterindenttrue
+ \interlinepenalty\@M
+ \leavevmode
+ \@tempdima \cftsubfignumwidth\relax
+ \let\@cftbsnum \cftsubfigpresnum
+ \let\@cftasnum \cftsubfigaftersnum
+ \let\@cftasnumb \cftsubfigaftersnumb
+ \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
+ {\cftsubfigfont ##1}\nobreak
+ \cftsubfigfillnum{##2}}%
+ \fi
+ }%
+}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@cftsetsubfig}
+% This command initialises the setup for subfigure captions in the LoF.
+% \begin{macrocode}
+\newcommand{\@cftsetsubfig}{%
+% \end{macrocode}
+% \begin{macro}{\cftbeforesubfigskip}
+% \begin{macro}{\cftsubfigindent}
+% \begin{macro}{\cftsubfignumwidth}
+% \begin{macro}{\cftsubfigfont}
+% \begin{macro}{\cftsubfigpresnum}
+% \begin{macro}{\cftsubfigaftersnum}
+% \begin{macro}{\cftsubfigaftersnumb}
+% \begin{macro}{\cftsubfigleader}
+% \begin{macro}{\cftsubfigdotsep}
+% \begin{macro}{\cftsubfigpagefont}
+% \begin{macro}{\cftsubfigafterpnum}
+% \begin{macro}{\toclevel@subfig}
+% \begin{macro}{\cftsubfigfillnum}
+% \begin{macrocode}
+\newlength{\cftbeforesubfigskip}
+ \setlength{\cftbeforesubfigskip}{\z@ \@plus.2\p@}
+\newlength{\cftsubfigindent}
+ \setlength{\cftsubfigindent}{3.8em}
+\newlength{\cftsubfignumwidth}
+ \setlength{\cftsubfignumwidth}{2.5em}
+\newcommand{\cftsubfigfont}{\normalfont}
+\newcommand{\cftsubfigpresnum}{}
+\newcommand{\cftsubfigaftersnum}{}
+\newcommand{\cftsubfigaftersnumb}{}
+\newcommand{\cftsubfigleader}{\normalfont\cftdotfill{\cftsubtabdotsep}}
+\newcommand{\cftsubfigdotsep}{\cftdotsep}
+\newcommand{\cftsubfigpagefont}{\normalfont}
+\newcommand{\cftsubfigafterpnum}{}
+\providecommand{\toclevel@subfigure}{1}
+\newcommand{\cftsubfigfillnum}[1]{%
+ {\cftsubfigleader}\nobreak
+ \makebox[\@pnumwidth][\cftpnumalign]{\cftsubfigpagefont ##1}\cftsubfigafterpnum\par
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% This is the end of |\@cftsetsubfig|.
+% \begin{macrocode}
+}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@cftl@subtab}
+% This code redefines the code for |\l@subtable|.
+% \begin{macrocode}
+\newcommand{\@cftl@subtab}{%
+% \end{macrocode}
+% \begin{macro}{\l@subtable}
+% |\l@subtable{|\meta{title}|}{|\meta{page}|}| typesets the LoT entry for
+% a |subtable| caption heading. It is essentially the same as the
+% parameterised code for |\l@table| except account has to be taken of
+% |lotdepth|.
+% \begin{macrocode}
+\renewcommand*{\l@subtable}[2]{%
+ \ifnum \c@lotdepth > \toclevel@subtable
+ \vskip \cftbeforesubtabskip
+ {\leftskip \cftsubtabindent\relax
+ \rightskip \@tocrmarg
+ \parfillskip -\rightskip
+ \parindent \cftsubtabindent\relax\@afterindenttrue
+ \interlinepenalty\@M
+ \leavevmode
+ \@tempdima \cftsubtabnumwidth\relax
+ \let\@cftbsnum \cftsubtabpresnum
+ \let\@cftasnum \cftsubtabaftersnum
+ \let\@cftasnumb \cftsubtabaftersnumb
+ \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
+ {\cftsubtabfont ##1}\nobreak
+ \cftsubtabfillnum{##2}}%
+ \fi
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@cftsetsubtab}
+% This command sets up the defaults for subtable entries in the LoT.
+% \begin{macrocode}
+\newcommand{\@cftsetsubtab}{%
+% \end{macrocode}
+% \begin{macro}{\cftbeforesubtabskip}
+% \begin{macro}{\cftsubtabindent}
+% \begin{macro}{\cftsubtabnumwidth}
+% \begin{macro}{\cftsubtabfont}
+% \begin{macro}{\cftsubtabpresnum}
+% \begin{macro}{\cftsubtabaftersnum}
+% \begin{macro}{\cftsubtabaftersnumb}
+% \begin{macro}{\cftsubtableader}
+% \begin{macro}{\cftsubtabdotsep}
+% \begin{macro}{\cftsubtabpagefont}
+% \begin{macro}{\cftsubtabafterpnum}
+% \begin{macro}{\toclevel@subtable}
+% \begin{macro}{\cftsubtabfillnum}
+% These are the user commands to control the typesetting of Subtable
+% caption entries.
+% They are initialised to give the standard appearance.
+% \begin{macrocode}
+\newlength{\cftbeforesubtabskip}
+ \setlength{\cftbeforesubtabskip}{\z@ \@plus.2\p@}
+\newlength{\cftsubtabindent}
+ \setlength{\cftsubtabindent}{3.8em}
+\newlength{\cftsubtabnumwidth}
+ \setlength{\cftsubtabnumwidth}{2.5em}
+\newcommand{\cftsubtabfont}{\normalfont}
+\newcommand{\cftsubtabpresnum}{}
+\newcommand{\cftsubtabaftersnum}{}
+\newcommand{\cftsubtabaftersnumb}{}
+\newcommand{\cftsubtableader}{\normalfont\cftdotfill{\cftsubtabdotsep}}
+\newcommand{\cftsubtabdotsep}{\cftdotsep}
+\newcommand{\cftsubtabpagefont}{\normalfont}
+\newcommand{\cftsubtabafterpnum}{}
+\providecommand{\toclevel@subtable}{1}
+\newcommand{\cftsubtabfillnum}[1]{%
+ {\cftsubtableader}\nobreak
+ \makebox[\@pnumwidth][\cftpnumalign]{\cftsubtabpagefont ##1}\cftsubtabafterpnum\par
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% This is the end of |\@cftsetsubtab|.
+% \begin{macrocode}
+}
+
+% \end{macrocode}
+% \end{macro}
+%
+% Call the \Lpack{subfigure} package setup code only if the
+% \Lopt{subfigure} option is specified. The |\l@...| redefinitions have to
+% come after the \Lpack{subfigure} package is loaded.
+% \begin{macrocode}
+
+\if@cftsubfigopt
+ \@cftsetsubfig\@cftsetsubtab
+ \AtBeginDocument{\@cftl@subfig\@cftl@subtab}
+\fi
+%% \AtBeginDocument{\if@cftsubfigopt
+%% \@cftsetsubfig\@cftsetsubtab
+%% \@cftl@subfig\@cftl@subtab
+%% \fi}
+
+% \end{macrocode}
+%
+%
+% \subsection{New list of\ldots}
+% \changes{v2.0}{2001/03/03}{Added \cs{newlistof} and \cs{newlistentry}}
+%
+% \begin{macro}{\newlistentry}
+% |\newlistentry[|\meta{within}|]{|\meta{counter}|}{|\meta{ext}|}{|\meta{level-1}|}| creates a set of commands for a new kind of entry into a List of.
+% \begin{macrocode}
+\newcommand{\newlistentry}[4][\@empty]{%
+% \end{macrocode}
+% \begin{macro}{\c@X}
+% \begin{macro}{\theX}
+% Check if \meta{within} and \meta{counter} have been defined. It is
+% an error if \meta{within} has not been defined, and an error if
+% \meta{counter} has been defined. Set the default counter values.
+% \begin{macrocode}
+ \@ifundefined{c@#2}{% check & set the counter
+ \ifx \@empty#1\relax
+ \newcounter{#2}
+ \else
+ \@ifundefined{c@#1}{\PackageWarning{tocloft}%
+ {#1 has no counter for use as a `within'}
+ \newcounter{#2}}%
+ {\newcounter{#2}[#1]%
+ \expandafter\edef\csname the#2\endcsname{%
+ \expandafter\noexpand\csname the#1\endcsname.\noexpand\arabic{#2}}}
+ \fi
+ \setcounter{#2}{0}
+ }
+ {\PackageError{tocloft}{#2 has been previously defined}{\@eha}}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% That finishes off the error checking. No matter what the result, the
+% rest of the new commands are defined.
+%
+% \begin{macro}{\l@X}
+% |\l@X{|\meta{title}|}{|\meta{page}|}| typesets the entry.
+% \begin{macrocode}
+ \@namedef{l@#2}##1##2{%
+% \end{macrocode}
+% Only typeset if the |\Zdepth| is greater than \meta{level-1}.
+% \begin{macrocode}
+ \ifnum \@nameuse{c@#3depth} > #4\relax
+ \vskip \@nameuse{cftbefore#2skip}
+ {\leftskip \@nameuse{cft#2indent}\relax
+ \rightskip \@tocrmarg
+ \parfillskip -\rightskip
+ \parindent \@nameuse{cft#2indent}\relax\@afterindenttrue
+ \interlinepenalty\@M
+ \leavevmode
+ \@tempdima \@nameuse{cft#2numwidth}\relax
+ \expandafter\let\expandafter\@cftbsnum\csname cft#2presnum\endcsname
+ \expandafter\let\expandafter\@cftasnum\csname cft#2aftersnum\endcsname
+ \expandafter\let\expandafter\@cftasnumb\csname cft#2aftersnumb\endcsname
+ \advance\leftskip\@tempdima \null\nobreak\hskip -\leftskip
+ {\@nameuse{cft#2font}##1}\nobreak
+ \@nameuse{cft#2fillnum}{##2}}%
+ \fi
+ } % end of \l@#2
+
+% \end{macrocode}
+% \end{macro}
+%
+% Now define all the layout commands used by |\l@X|. The default
+% values of these correspond to those for section entries in
+% non-chaptered documents.
+% \begin{macro}{\cftbeforeXskip}
+% \begin{macrocode}
+ \expandafter\newlength\csname cftbefore#2skip\endcsname
+ \setlength{\@nameuse{cftbefore#2skip}}{\z@ \@plus .2\p@}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\cftXindent}
+% \begin{macro}{\cftXnumwidth}
+% \begin{macrocode}
+ \expandafter\newlength\csname cft#2indent\endcsname
+ \expandafter\newlength\csname cft#2numwidth\endcsname
+% \end{macrocode}
+% Set the default values for the indent and numwidth depending on
+% the entry's level. A level of 1 corresponds to a figure entry.
+% \begin{macrocode}
+ \ifcase #4\relax % 0
+ \setlength{\@nameuse{cft#2indent}}{0em}
+ \setlength{\@nameuse{cft#2numwidth}}{1.5em}
+ \or % 1
+ \setlength{\@nameuse{cft#2indent}}{1.5em}
+ \setlength{\@nameuse{cft#2numwidth}}{2.3em}
+ \or % 2
+ \setlength{\@nameuse{cft#2indent}}{3.8em}
+ \setlength{\@nameuse{cft#2numwidth}}{3.2em}
+ \or % 3
+ \setlength{\@nameuse{cft#2indent}}{7.0em}
+ \setlength{\@nameuse{cft#2numwidth}}{4.1em}
+ \else % anything else
+ \setlength{\@nameuse{cft#2indent}}{10.0em}
+ \setlength{\@nameuse{cft#2numwidth}}{5.0em}
+ \fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\cftXfont}
+% \begin{macro}{\cftXpresnum}
+% \begin{macro}{\cftXaftersnum}
+% \begin{macro}{\cftXaftersnumb}
+% \begin{macro}{\cftXdotsep}
+% \begin{macro}{\cftXleader}
+% \begin{macro}{\cftXpagefont}
+% \begin{macro}{\cftXafterpnum}
+% And the remaining commands.
+% \begin{macrocode}
+ \@namedef{cft#2font}{\normalfont}
+ \@namedef{cft#2presnum}{}
+ \@namedef{cft#2aftersnum}{}
+ \@namedef{cft#2aftersnumb}{}
+ \@namedef{cft#2dotsep}{\cftdotsep}
+ \@namedef{cft#2leader}{\normalfont\cftdotfill{\@nameuse{cft#2dotsep}}}
+ \@namedef{cft#2pagefont}{\normalfont}
+ \@namedef{cft#2afterpnum}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\toclevel@X}
+% The hyperref package needs a command |\toclevel@X|, holding
+% the \meta{level-1} value.
+% \begin{macrocode}
+ \@namedef{toclevel@#2}{#4}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\cftXfillnum}
+% Typeset the leader and page number.
+% \begin{macrocode}
+ \@namedef{cft#2fillnum}##1{%
+ {\@nameuse{cft#2leader}}\nobreak
+ \makebox[\@pnumwidth][\cftpnumalign]{\@nameuse{cft#2pagefont}##1}\@nameuse{cft#2afterpnum}\par
+ }
+% \end{macrocode}
+% \end{macro}
+% This ends the definition of |\newlistentry|.
+% \begin{macrocode}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\newlistof}
+% |\newlistof[|\meta{within}|]{|\meta{entry}|}{|\meta{ext}|}{|\meta{listofname}|}|
+% creates the commands for a new List of.
+% \begin{macrocode}
+\newcommand{\newlistof}[4][\@empty]{%
+% \end{macrocode}
+% Call |\newlistentry| to set up the first level entry.
+% \begin{macrocode}
+ \ifx \@empty#1\relax
+ \newlistentry{#2}{#3}{0}
+ \else
+ \newlistentry[#1]{#2}{#3}{0}
+ \fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ext@Z}
+% \begin{macro}{\Zdepth}
+% The file extension and listing depth.
+% \begin{macrocode}
+ \@namedef{ext@#2}{#3}
+ \newcounter{#3depth}
+ \setcounter{#3depth}{1}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\cftmarkZ}
+% The heading marks for the listing.
+% \changes{v2.3}{2002/06/15}{different koma settings in \cs{newlistof}}
+% \begin{macrocode}
+ \if@cftkoma
+ \@namedef{cftmark#3}{%
+ \@mkboth{#4}{#4}}
+ \else
+ \@namedef{cftmark#3}{%
+ \@mkboth{\MakeUppercase{#4}}{\MakeUppercase{#4}}}
+ \fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\listofX}
+% Typeset the listing title and entries.
+% \begin{macrocode}
+ \if@cftnctoc
+% \end{macrocode}
+% For the \Lopt{titles} option, basically copy the code from
+% the standard |\tableofcontents| command.
+% \begin{macrocode}
+ \@namedef{listof#2}{%
+ \@cfttocstart
+ \if@cfthaschapter
+ \chapter*{#4}
+ \else
+ \section*{#4}
+ \fi
+ \@nameuse{cftmark#3}
+ \@starttoc{#3}%
+ \@cfttocfinish}
+ \else
+% \end{macrocode}
+% Otherwise use the fully parameterised definition.
+% \begin{macrocode}
+ \@namedef{listof#2}{%
+ \@cfttocstart
+ \par
+ \begingroup
+ \parindent\z@ \parskip\cftparskip
+ \@nameuse{@cftmake#3title}
+ \@starttoc{#3}%
+ \endgroup
+ \@cfttocfinish}
+ \fi
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@cftmakeZtitle}
+% Typeset the title.
+% \changes{v2.3}{2002/06/15}{Added \cs{@secpenalty} to \cs{@cftmakeZtitle}}
+% \changes{v2.3}{2002/06/15}{Added \cs{@cftpagestyle} to \cs{@cftmakeZtitle}}
+% \begin{macrocode}
+ \@namedef{@cftmake#3title}{%
+ \addpenalty\@secpenalty
+ \if@cfthaschapter
+ \vspace*{\@nameuse{cftbefore#3titleskip}}%
+ \else
+ \vspace{\@nameuse{cftbefore#3titleskip}}%
+ \fi
+ \@cftpagestyle
+ {\interlinepenalty\@M
+ {\@nameuse{cft#3titlefont}#4}{\@nameuse{cftafter#3title}}%
+ \@nameuse{cftmark#3}%
+ \par\nobreak
+ \vskip \@nameuse{cftafter#3titleskip}%
+ \@afterheading}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\cftbeforeZtitleskip}
+% \begin{macro}{\cftafterZtitleskip}
+% \begin{macro}{\cftZtitlefont}
+% The skips before and after the title heading, and the title font.
+% The default values depend on whether or not the document class
+% has chapters.
+% \begin{macrocode}
+ \expandafter\newlength\csname cftbefore#3titleskip\endcsname
+ \expandafter\newlength\csname cftafter#3titleskip\endcsname
+ \if@cfthaschapter
+ \setlength{\@nameuse{cftbefore#3titleskip}}{50pt}
+ \setlength{\@nameuse{cftafter#3titleskip}}{40pt}
+ \if@cftkoma
+ \@namedef{cft#3titlefont}{\size@chapter\sectfont}
+ \else
+ \@namedef{cft#3titlefont}{\normalfont\Huge\bfseries}
+ \fi
+ \else
+ \setlength{\@nameuse{cftbefore#3titleskip}}{3.5ex \@plus 1ex \@minus .2ex}
+ \setlength{\@nameuse{cftafter#3titleskip}}{2.3ex \@plus .2ex}
+ \if@cftkoma
+ \@namedef{cft#3titlefont}{\size@section\sectfont}
+ \else
+ \@namedef{cft#3titlefont}{\normalfont\Huge\bfseries}
+ \fi
+ \fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\cftafterZtitle}
+% Something to go after the title.
+% \begin{macrocode}
+ \@namedef{cftafter#3title}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\cftZprehook}
+% \begin{macro}{\cftZposthook}
+% Hooks before and after the list of entries.
+% \begin{macrocode}
+ \@namedef{cft#3prehook}{}
+ \@namedef{cft#3posthook}{}
+% \end{macrocode}
+% \end{macro}
+%
+% This is the end of the definition of |\newlistof|.
+% \begin{macrocode}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\cftsetindents}
+% \changes{v2.0}{2001/03/15}{Added \cs{cftsetindents}}
+% |\cftsetindents{|\meta{entry}|}{|\meta{indent}|}{|\meta{numwidth}|}| sets
+% the \textit{indent} and \textit{numwidth} for entry \meta{entry}. The macro
+% has to map between the external entry name and the internal shorthand.
+% \begin{macrocode}
+\newcommand{\cftsetindents}[3]{%
+ \def\@cftemp{#1}
+ \ifx\@cftemp\cftchapname
+ \@cftsetindents{chap}{#2}{#3}
+ \else
+ \ifx\@cftemp\cftsecname \@cftsetindents{sec}{#2}{#3}
+ \else
+ \ifx\@cftemp\cftsubsecname \@cftsetindents{subsec}{#2}{#3}
+ \else
+ \ifx\@cftemp\cftsubsubsecname \@cftsetindents{subsubsec}{#2}{#3}
+ \else
+ \ifx\@cftemp\cftparaname \@cftsetindents{para}{#2}{#3}
+ \else
+ \ifx\@cftemp\cftsubparaname \@cftsetindents{subpara}{#2}{#3}
+ \else
+ \ifx\@cftemp\cftfigname \@cftsetindents{fig}{#2}{#3}
+ \else
+ \ifx\@cftemp\cftsubfigname \@cftsetindents{subfig}{#2}{#3}
+ \else
+ \ifx\@cftemp\cfttabname \@cftsetindents{tab}{#2}{#3}
+ \else
+ \ifx\@cftemp\cftsubtabname \@cftsetindents{subtab}{#2}{#3}
+ \else
+ \@cftsetindents{#1}{#2}{#3}
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@cftsetindents}
+% |\@cftsetindents{|\meta{X}|}{|\meta{indent}|}{|\meta{numwidth}|}| is
+% the internal version of |\cftsetindents|, where in this case \meta{X}
+% is the internal (shorthand) name of the entry.
+% \begin{macrocode}
+\newcommand{\@cftsetindents}[3]{%
+ \setlength{\@nameuse{cft#1indent}}{#2}
+ \setlength{\@nameuse{cft#1numwidth}}{#3}
+}
+
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Switching page numbering}
+% \changes{v2.0}{2001/03/03}{Added page number switching off/on}
+%
+% \begin{macro}{\@cftpnumoff}
+% |\@cftpnumoff{|\meta{shorthand}|}| is the workhorse
+% for switching page numbering off. The \meta{shorthand} argument is the
+% shorthand name of the entry (e.g. |subsec| for |subsection|).
+% The macro redefines the |\cftXnumfill| command so that there is no leader
+% and the page number is ignored.
+% \begin{macrocode}
+\newcommand{\@cftpnumoff}[1]{%
+ \@namedef{cft#1fillnum}##1{%
+ \cftparfillskip\@nameuse{cft#1afterpnum}\par}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\cftchapname}
+% \begin{macro}{\cftsecname}
+% \begin{macro}{\cftsubsecname}
+% \begin{macro}{\cftsubsubsecname}
+% \begin{macro}{\cftparaname}
+% \begin{macro}{\cftsubparaname}
+% \begin{macro}{\cftfigname}
+% \begin{macro}{\cftsubfigname}
+% \begin{macro}{\cfttabname}
+% \begin{macro}{\cftsubtabname}
+% Unfortunately an early design decision was the use shorthands like |sec|
+% for |section|. For the page switching I need to be able to correlate the
+% shorthands and longhands.
+% \begin{macrocode}
+\newcommand*{\cftchapname}{chapter}
+\newcommand*{\cftsecname}{section}
+\newcommand*{\cftsubsecname}{subsection}
+\newcommand*{\cftsubsubsecname}{subsubsection}
+\newcommand*{\cftparaname}{paragraph}
+\newcommand*{\cftsubparaname}{subparagraph}
+\newcommand*{\cftfigname}{figure}
+\newcommand*{\cftsubfigname}{subfigure}
+\newcommand*{\cfttabname}{table}
+\newcommand*{\cftsubtabname}{subtable}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\cftpagenumbersoff}
+% The user level command for switching off page numbers is
+% |\cftpagenumbersoff{|\meta{entry}|}| where \meta{entry} is the longhand
+% name of the entry. The principal task opf this macro is to determine
+% the corresponding shorthand name of the \meta{entry} and then call
+% |\@cftpnumoff| to do the work. For |part| and user-defined entries
+% the long- and short-hand entry names are identical.
+% \begin{macrocode}
+\DeclareRobustCommand{\cftpagenumbersoff}[1]{%
+ \def\@cftemp{#1}
+ \ifx\@cftemp\cftchapname
+ \@cftpnumoff{chap}
+ \else
+ \ifx\@cftemp\cftsecname \@cftpnumoff{sec}
+ \else
+ \ifx\@cftemp\cftsubsecname \@cftpnumoff{subsec}
+ \else
+ \ifx\@cftemp\cftsubsubsecname \@cftpnumoff{subsubsec}
+ \else
+ \ifx\@cftemp\cftparaname \@cftpnumoff{para}
+ \else
+ \ifx\@cftemp\cftsubparaname \@cftpnumoff{subpara}
+ \else
+ \ifx\@cftemp\cftfigname \@cftpnumoff{fig}
+ \else
+ \ifx\@cftemp\cftsubfigname \@cftpnumoff{subfig}
+ \else
+ \ifx\@cftemp\cfttabname \@cftpnumoff{tab}
+ \else
+ \ifx\@cftemp\cftsubtabname \@cftpnumoff{subtab}
+ \else
+ \@cftpnumoff{#1}
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\cftpagenumberson}
+% |\cftpagenumberson{|\meta{entry}|}| is the user level command for
+% reversing the corresponding |\cftpagenumbersoff|.
+% \begin{macrocode}
+\DeclareRobustCommand{\cftpagenumberson}[1]{%
+ \def\@cftemp{#1}
+ \ifx\@cftemp\cftchapname
+ \@cftpnumon{chap}
+ \else
+ \ifx\@cftemp\cftsecname \@cftpnumon{sec}
+ \else
+ \ifx\@cftemp\cftsubsecname \@cftpnumon{subsec}
+ \else
+ \ifx\@cftemp\cftsubsubsecname \@cftpnumon{subsubsec}
+ \else
+ \ifx\@cftemp\cftparaname \@cftpnumon{para}
+ \else
+ \ifx\@cftemp\cftsubparaname \@cftpnumon{subpara}
+ \else
+ \ifx\@cftemp\cftfigname \@cftpnumon{fig}
+ \else
+ \ifx\@cftemp\cftsubfigname \@cftpnumon{subfig}
+ \else
+ \ifx\@cftemp\cfttabname \@cftpnumon{tab}
+ \else
+ \ifx\@cftemp\cftsubtabname \@cftpnumon{subtab}
+ \else
+ \@cftpnumon{#1}
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+}
+
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@cftpnumon}
+% |\@cftpnumon{|\meta{shorthand}|}| is the workhorse
+% for switching page numbering off. The \meta{shorthand} argument is the
+% shorthand name of the entry (e.g. |subsec| for |subsection|).
+% The macro defines the |\cftXnumfill| command to correspond to
+% the default definition.
+% \begin{macrocode}
+\newcommand{\@cftpnumon}[1]{%
+ \@namedef{cft#1fillnum}##1{%
+ {\@nameuse{cft#1leader}}\nobreak
+ \makebox[\@pnumwidth][\cftpnumalign]{\@nameuse{cft#1pagefont}##1}\@nameuse{cft#1afterpnum}\par
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+%
+%
+%
+% \subsection{Experimental utilities}
+%
+% The code in this section is experimental but in the sense that the
+% capabilities might be modified in the future rather than that the code
+% does not work.
+%
+% \begin{macro}{\cftchapterprecis}
+% This is experimental. |\cftchapterprecis{|\meta{text}|}| typesets
+% \meta{text} at the point where it is called, and also adds \meta{text}
+% to the \file{.toc} file. It is expects to be called immediately after
+% a |\chapter| command.
+% \begin{macrocode}
+\newcommand{\cftchapterprecis}[1]{%
+ \cftchapterprecishere{#1}
+ \cftchapterprecistoc{#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\cftchapterprecishere}
+% |\cftchapterprecishere{|\meta{text}|}| typesets \meta{text}. It expects
+% to be called immediately after a |\chapter| command. First add some
+% negative vertical space to move it closer to the chapter heading.
+% \begin{macrocode}
+\newcommand{\cftchapterprecishere}[1]{%
+ \vspace*{-2\baselineskip}
+% \end{macrocode}
+% Typeset its argument using italic font in a |quote| environment.
+% \begin{macrocode}
+ \begin{quote}\textit{#1}\end{quote}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\cftchapterprecistoc}
+% |\cftchapterprecistoc{|\meta{text}|}| adds \meta{text} to the \file{.toc}
+% file. The \meta{text} will be typeset within the same margins as the
+% the title text of a |\chapter| heading, using an italic font.
+% \begin{macrocode}
+\newcommand{\cftchapterprecistoc}[1]{\addtocontents{toc}{%
+% \end{macrocode}
+% Start a group to localize changes to the paragraphing. Set the
+% left margin to the chapter indent plus the chapter number width.
+% \begin{macrocode}
+ {\leftskip \cftchapindent\relax
+ \advance\leftskip \cftchapnumwidth\relax
+% \end{macrocode}
+% Set the right hand margin to |\@tocrmarg|.
+% \begin{macrocode}
+ \rightskip \@tocrmarg\relax
+% \end{macrocode}
+% Typeset \meta{text} using an italic font, then ensure that the paragraph
+% is finished (to use the local skips). Finally close the group and we
+% are done.
+% \begin{macrocode}
+ \textit{#1}\protect\par}}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\cftlocalchange}
+% |\cftmakelocalchange{|\meta{file}|}{|\meta{pnumwidth}|}{|\meta{tocrmarg}|}|
+% makes an entry into \meta{file} to change the |\@pnumwidth| and
+% the |\@tocrmarg| values.
+% \begin{macrocode}
+\newcommand{\cftlocalchange}[3]{%
+ \addtocontents{#1}{\protect\cftsetpnumwidth{#2} \protect\cftsetrmarg{#3}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\cftaddtitleline}
+% |\cftaddtitleline{|\meta{file}|}{|\meta{kind}|}{|\meta{title}|}{|\meta{page}|}|
+% adds a |\contentsline| entry to \meta{file} with the given information.
+% \begin{macrocode}
+\newcommand{\cftaddtitleline}[4]{\addtocontents{#1}{%
+ \protect\contentsline{#2}{#3}{#4}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\cftaddnumtitleline}
+% |\cftaddtitleline{|\meta{file}|}{|\meta{kind}|}{|\meta{num}|}{|\meta{title}|}{|\meta{page}|}|
+% adds a |\contentsline| entry to \meta{file} with the given information.
+% \changes{v2.3c}{2003/09/26}{Removed \cs{ignorespaces} from \cs{cftaddnumtitleline}}
+% \begin{macrocode}
+\newcommand{\cftaddnumtitleline}[5]{\addtocontents{#1}{%
+ \protect\contentsline{#2}{\protect\numberline{#3}#4}{#5}}}
+% \end{macrocode}
+% \end{macro}
+%
+% And, if dear old \Lpack{hyperref} has been used, we have to fix up these
+% two macros.
+% \changes{2003/09/26}{v2.3c}{Hyperref fix for \cs{cftaddtitleline} and
+% \cs{cftaddnumtitleline}}
+% \begin{macrocode}
+\AtBeginDocument{%
+ \@ifpackageloaded{hyperref}{%
+ \renewcommand{\cftaddtitleline}[4]{\addtocontents{#1}{%
+ \protect\contentsline{#2}{#3}{#4}{\@currentHref}}}
+ \renewcommand{\cftaddnumtitleline}[5]{\addtocontents{#1}{%
+ \protect\contentsline{#2}{\protect\numberline{#3}#4}{#5}{\@currentHref}}}
+ }{}
+}
+
+% \end{macrocode}
+%
+%
+% \begin{macro}{\@starttoc}
+%
+% Okay, here's a roughly-comprehensive list where \cs{@starttoc} is redefined in \TeX{} Live 2014.
+% \begin{itemize}
+% \item amsart, amsbook, amsdtx, amsproc
+% \item asect
+% \item latx.ltx (of course)
+% \item newfloat
+% \item flowfram
+% \item gmampulex (?), gmtypos
+% \item hyperref, memhfixc
+% \item ijmart
+% \item scrartcl, scrbook, scrreprt
+% \item scrwtfile
+% \item tocbasic
+% \item tocstyle
+% \item memoir
+% \item multitoc
+% \item nccsect
+% \item notoccite
+% \item artikel3, boek3, rapport3,
+% \item rerunfilecheck
+% \item parskip
+% \item pdfwin
+% \item revtex4
+% \item devanagari
+% \end{itemize}
+% This makes things difficult if we want to redefine \cs{@starttoc} here.
+% Many of the packages/classes above will not be used in conjunction with tocloft; on the other hand, we don't want to trample too much on others' code.
+%
+% So for our own work here, let's be extra conservative, at least for now, and only hook into \cs{starttoc} if it's the standard \LaTeX{} version.
+% \begin{macrocode}
+\def\@starttoc@latex@orig#1{%
+ \begingroup
+ \makeatletter
+ \@input{\jobname.#1}%
+ \if@filesw
+ \expandafter\newwrite\csname tf@#1\endcsname
+ \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax
+ \fi
+ \@nobreakfalse
+\endgroup}
+\ifx\@starttoc\@starttoc@latex@orig
+ \def\@starttoc#1{%
+ \csname cft#1prehook\endcsname
+ \begingroup
+ \makeatletter
+ \@input{\jobname.#1}%
+ \if@filesw
+ \expandafter\newwrite\csname tf@#1\endcsname
+ \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax
+ \fi
+ \@nobreakfalse
+ \endgroup
+ \csname cft#1posthook\endcsname}
+ \newcommand\cfttocprehook{}
+ \newcommand\cftlofprehook{}
+ \newcommand\cftlotprehook{}
+ \newcommand\cfttocposthook{}
+ \newcommand\cftlofposthook{}
+ \newcommand\cftlotposthook{}
+\else
+ \PackageWarning{tocloft}{\string\@starttoc\space has already been redefined; tocloft bailing out.}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+%
+% The end of this package.
+% \begin{macrocode}
+%</usc>
+% \end{macrocode}
+%
+%
+% \bibliographystyle{alpha}
+%
+% \begin{thebibliography}{GMS94}
+%
+% \bibitem[Coc95]{SUBFIGURE}
+% Steven Douglas Cochran.
+% \newblock \emph{{The subfigure package}}.
+% \newblock March 1995.
+% \newblock (Available from CTAN as file \texttt{subfigure.dtx})
+%
+% \bibitem[Dru99]{MINITOC}
+% Jean-Pierre Drucbert.
+% \newblock \emph{{The minitoc package}}.
+% \newblock August 1999.
+% \newblock (Available from CTAN in subdirectory \texttt{/minitoc})
+%
+% \bibitem[GMS94]{GOOSSENS94}
+% Michel Goossens, Frank Mittelbach, and Alexander Samarin.
+% \newblock {\em The LaTeX Companion}.
+% \newblock Addison-Wesley Publishing Company, 1994.
+%
+% \bibitem[Lin97]{FNCYCHAP}
+% Ulf~A. Lindgren.
+% \newblock \emph{{FncyChap V1.11}}.
+% \newblock April 1997.
+% \newblock (Available from CTAN in subdirectory \texttt{/fncychap})
+%
+% \bibitem[Lin95]{FLOAT}
+% Anselm Lingnau.
+% \newblock \emph{{An Improved Environment for Floats}}.
+% \newblock March 1995.
+% \newblock (Available from CTAN in subdirectory \texttt{/float})
+%
+% \bibitem[Wil96a]{ALGORITHM}
+% Peter Williams.
+% \newblock \emph{{Algorithms}}.
+% \newblock April 1996.
+% \newblock (Available from CTAN in subdirectory \texttt{/algorithm})
+%
+% \bibitem[Wil96b]{PRW96i}
+% Peter~R. Wilson.
+% \newblock \emph{{LaTeX for standards: The LaTeX package files user manual}}.
+% \newblock NIST Report NISTIR, June 1996.
+%
+% \bibitem[Wil00]{TOCBIBIND}
+% Peter~R. Wilson.
+% \newblock \emph{{The tocbibind package}}.
+% \newblock March 2000.
+% \newblock (Available from CTAN as file \texttt{tocbibind.dtx})
+%
+% \bibitem[Wil01]{CCAPTION}
+% Peter~R. Wilson.
+% \newblock \emph{{The ccaption package}}.
+% \newblock March 2001.
+% \newblock (Available from CTAN as file \texttt{ccaption.dtx})
+%
+% \end{thebibliography}
+%
+%
+% \Finale
+% \PrintIndex
+%
+\endinput
+
+%% \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 \~}
+
+