LaTeX ToC Customization Guide
LaTeX ToC Customization Guide
\@pnumwidth
  \@tocrmarg
-
indent
-
numwidth
487 title  end
continue. . .   . . . title
3.5   Heading. . .   . . . title
. . . . . . . . . . . .
-
\@dotsep
Figure  1:   Layout  of  a  ToC  (LoF,  LoT)  entry
internal   L
A
T
E
X  commands  that  are  used  in  the  typesetting.   The  page  number  is
typeset ushright in a box of width  \@pnumwidth, and the box is at the righthand
margin.   If   the  page  number  is  too  long  to  t  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  math
units
3
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:
   \@pnumwidth  =  1.55em
   \@tocrmarg  =  2.55em
   \@dotsep  =  4.5
The  values  can  be  changed  by  using  \renewcommand,  in  spite  of  the  fact  that  the
rst  two  appear  to  be  lengths.
Dotted  leaders   are  not   available  for   Part   and  Chapter   ToC  entries   (nor   for
Section  entries  in  the  article  class  and  its  derivatives).
Each  \l@kind  macro  is   responsible   for   setting  the   general   indent   from  the \numberline
lefthand  margin,   and  the  numwidth.   The  \numberline{number}  macro  is  re-
sponsible  for  typesetting  the  number  ushleft  in  a  box  of  width  numwidth.   If  the
number  is  too  long  for  the  box  then  it  will  protrude  into  the  title  text.   The  title
text  is  indented  by  (indent  +  numwidth)  from  the  lefthand  margin.   That  is,   the
title  text  is  typeset  in  a  block  of  width
(\linewidth  -  indent   -  numwidth  -  \@tocrmarg).
(athurber@emba.uvm.edu)  for  their  suggestions.
2
For  gures  and  tables  it  is  the \caption  command  that  populates  the  .lof  and  .lot  les.
3
There  are  18mu  to  1em.
3
Table  1:   Indents  and  Numwidths  (in  ems)
Entry   Level   Chaptered   Otherwise
indent   numwidth   indent   numwidth
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
gure/table   (1)   1.5   2.3   1.5   2.3
Table  1  lists  the  standard  values  for  the  indent   and  numwidth.   There  is  no
explicit  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  gure  entries  are  all  indented.
Most  of  the  \l@kind  commands  are  dened  in  terms  of  the  \@dottedtocline \@dottedtocline
command.   This  command  takes  three  arguments:
\@dottedtocline{seclevel }{indent}{numwidth}.
For  example,  one  denition  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 denitions (but the tocloft package gives you handles to
easily  alter  things  without  having  to  know  the  L
A
T
E
X  internals).
You  can  use  the  \addcontentsline  command  to  add  \contentsline  com-
mands  to  a  le.
L
A
T
E
X  also  provides   the  \addtocontents{le}{text}  command  that   will \addtocontents
insert text into le.   You can use this for adding extra text and/or macros into
the le, for processing when the le is typeset by \tableofcontents (or whatever
other  command  is  used  for le  processing,   such  as  \listoftables  for  a  .lot
le).
As  \addcontentsline  and  \addtocontents  write  their  arguments  to  a  le,
any  fragile  commands  used  in  their  arguments  must  be  \protected.
You  can  make  certain  adjustments  to  the  ToC  etc.,   layout  without  using  any
package.   Some  examples  are:
   If  your  page  numbers  stick  out  into  the  righthand  margin
\renewcommand{\@pnumwidth}{3em}   \renewcommand{\@tocrmarg}{4em}
but  using  lengths  appropriate  to  your  document.
4
   To  have  the  (sectional)  titles  in  the  ToC,  etc.,  typeset  ragged  right  with  no
hyphenation
\renewcommand{\@tocrmarg}{2.55em   plus1fil}
where the value 2.55em can be changed for whatever margin space you want.
   The dots in the leaders can be eliminated by increasing  \@dotsep to a large
value:
\renewcommand{\@dotsep}{10000}
   To  have  dotted  leaders  in  your  ToC  and  LoF  but  not  in  your  LoT:
...
\tableofcontents
\makeatletter   \renewcommand{\@dotsep}{10000}   \makeatother
\listoftables
\makeatletter   \renewcommand{\@dotsep}{4.5}   \makeatother
\listoffigures
...
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.
   To  add  a  horizontal  line  across  the  whole  width  of  the  ToC  below  an  entry
for  a  Part:
\part{Part   title}
\addtocontents{toc}{\protect\mbox{}\protect\hrulefill\par}
Note  that  as  both  \addtocontents  and  \addcontentsline  write  their  ar-
guments  to  a  le,   it  means  that  any  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  .toc le
(assuming  that  it  is  the  second  Part  and  is  on  page  34):
\contentsline   {part}{II\hspace   {1em}Part   title}{34}
\mbox   {}\hrulefill   \par
If  the  \protects  were  not  used,  then  the  second  line  would  instead  be:
\unhbox   \voidb@x   \hbox   {}\unhbox   \voidb@x   \leaders   \hrule   \hfill   \kern   \z@   \par
5
   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:
  \addtocontents{toc}{\protect\newpage}  to  force  a  page  break.
  \addtocontents{toc}{\protect\enlargethispage{2\baselineskip}}
to  make  the  page  longer.
  \addtocontents{toc}{\protect\needspace{2\baselineskip}} to spec-
ify  that  if  there  is  not  a  vertical  space  of  two  baselines  left  on  the  page
then start a new page (the \needspace macro is dened in the needspace
package).
Remember,   if  you  are  modifying  any  command  that  includes  an  @  sign  then  this
must   be  done  in  either   a  .sty  le  or   if   in  the  document   itself   it   must   be  sur-
rounded  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:
\makeatletter
\renewcommand{\@dotsep}{9.0}
\makeatother
2   The  tocloft  package
The  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).
The ToC, LoF, and LoT are printed at the point in the document where these \tableofcontents
\listoffigures
\listoftables
commands  are  called,   as  per  normal   L
A
T
E
X.   However,   there  is  one  dierence  be-
tween  the  standard  L
A
T
E
X  behaviour  and  the  behaviour  with  the  tocloft  package.
In  the  standard  L
A
T
E
X  classes  that  have  \chapter  headings,   the  ToC,   LoF  and
LoT each appear on a new page.   With the tocloft package they do not necessarily
start new pages; if you want them to be on new pages you may have to specically
issue  an  appropriate  command  beforehand.   For  example:
...
\clearpage
\tableofcontents
\clearpage
\listoftables
...
The  \thispagestyle  page  style  of   the  ToC,   LoF  and/or   LoT  is   set   by  the \tocloftpagestyle
command  \tocloftpagestyle{style}, where style is one of the available page
styles.   The  package  initially  sets  \tocloftpagestyle{plain}.
6
2.1   Package  options
The  package  takes  the  following  options:
subgure   This  option  is  required  if,  and  only  if,  the  tocloft  and  subgure  packages  are
being  used  together.   The  two  packages  can  be  specied  in  any  order.
titles   The   titles   option  causes   the   titles   of   the   ToC,   LoF,   and  LoT  lists   to  be
typeset  using  the  default  L
A
T
E
X  methods.   This  can  be  useful,   for  example,
when  the  tocloft   and  fncychap  packages  are  used  together   and  the  fancy
chapter  styles  should  be  used  for  the  ToC,  etc.,  titles.
If you use the titles option you can ignore the next section and continue reading
at  section  2.3.
2.2   Changing  the  titles
Commands   are   provided   for   controlling   the   appearance   of   the   titles.   Fol-
lowing   L
A
T
E
X  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.
These  macros  set  the  appearance  of  the  running  heads  on  the  ToC,  LoF,  and \cftmarkZ
LoT  pages.   You  probably  dont  need  to  change  these.
These  lengths  control  the  vertical  spacing  before  and  after  the  titles.   You  can \cftbeforeZtitleskip
\cftafterZtitleskip   change  them  from  their  default  values  by  using  \setlength.
The  code  used  for  typesetting  the  ToC  title  looks  like \cftZtitlefont
\cftafterZtitle
{\cfttoctitlefont   \contentsname}{\cftaftertoctitle}\par
By default, \cftZtitlefont is dened as a font specication (e.g., \Large\bfseries),
and \cftafterZtitle is empty.   These commands can be changed (via \renewcommand)
to  change  the  typesetting.   As  examples:
   \renewcommand{\cftZtitlefont}{\hfill\Large\itshape}  will   result   in
a  Large  italic  title  typeset  ushright.
   \renewcommand{\cftZtitlefont}{\hfill\Large\bfseries} together with
\renewcommand{\cftafterZtitle}{\hfill}   will   give   a   centered   Large
bold  title.
   Doing
\renewcommand{\cftafterZtitle}{%
\\[\baselineskip]\mbox{}\hfill{\normalfont   Page}}
7
will  put  the  word  Page  ushright  on  the  line  following  the  title.   (If  you  do
this,  then  you  may  need  to  decrease  \cftafterZtitleskip).
   \renewcommand{\cftafterZtitle}{\thispagestyle{empty}}   will   make
the  page  with  the  title  empty  (i.e.,  the  page  number  will  not  be  printed).
2.3   Typesetting  the  entries
Commands  are  also  provided  to  enable  ner  control   over  the  typesetting  of   the
dierent kinds of entries.   The parameters dening the default layout of the entries
are  illustrated  as   part   of   the  layouts   package  or   in  [GMS94,   page  34],   and  are
repeated  in  Figure  1.
In the default ToC typesetting only the more minor entries have dotted leader \cftdot
lines  between  the  sectioning  title  and  the  page  number.   The  tocloft  package  pro-
vides  for  general  leaders  for  all  entries.   The  dot  in  a  leader  is  given  by  the  value
of   \cftdot.   Its  default  denition  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
\renewcommand{\cftdot}{\ensuremath{\ast}}
will  result  in  a  dotted  leader  using  asterisks  as  the  symbol.
Each  kind  of   entry  can  control   the  separation  between  the  dots  in  its  leader \cftdotsep
\cftnodots   (see  below).   For  consistency  though,  all  dotted  leaders  should  use  the  same  spac-
ing.   The  macro  \cftdotsep  species  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.
The   page   numbers   are   typeset   in   a   xed   width   box.   The   command \cftsetpnumwidth
\cftsetrmarg   \cftsetpnumwidth{length} can be used to change the width of the box (L
A
T
E
Xs
internal \@pnumwidth).   The title texts will end before reaching the righthand mar-
gin.   \cftsetrmarg{length}  can  be  used  to  set  this  distance  (L
A
T
E
Xs  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.
The  page  numbers  are  typeset  in  a  box  as  described  above.   By  default  they \cftpnumalign
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  xed  width  between  a  ToC
entry and its page number, say, a left alignment may be more suitable.   This can be
controlled by setting the  \cftpnumalign macro to  l,  c,  or  r (just like  \makebox):
\renewcommand{\cftpnumalign}{l}
Normally  the  \parskip  in  the  ToC,   etc.,   is   zero.   This   may  be  changed  by \cftparskip
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
8
\tableofcontents or \listoffigures or \listoftables if one or other of these
should  have  dierent  values  (which  is  not  a  good  idea).
In  the  following  I  will  use  X  to  stand  for  the  following:
   part  for  \part  titles
   chap  for  \chapter  titles
   sec  for  \section  titles
   subsec  for  \subsection  titles
   subsubsec  for  \subsubsection  titles
   para  for  \paragraph  titles
   subpara  for  \subparagraph  titles
   fig  for  gure  \caption  titles
   subfig  for  subgure  \caption  titles
   tab  for  table  \caption  titles
   subtab  for  subtable  \caption  titles
This  controls  the  vertical   space  before  an  entry.   It  can  be  changed  by  using \cftbeforeXskip
\setlength.
This  controls  the  indentation  of  an  entry  from  the  left  margin  (indent   in  Fig- \cftXindent
ure  1).   It  can  be  changed  using  \setlength.
This   controls   the  space  allowed  for   typesetting  title  numbers   (numwidth   in \cftXnumwidth
Figure  1).   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   specics   of   typesetting  an  en-
try.   This  is  a  simplied  pseudo-code  version  for  the  typesetting  of  numbered  and
unnumbered  entries.
{\cftXfont   {\cftXpresnum   SNUM\cftXaftersnum\hfil}   \cftXaftersnumb   TITLE}%
{\cftXleader}{\cftXpagefont   PAGE}\cftXafterpnum\par
{\cftXfont   TITLE}{\cftXleader}{\cftXpagefont   PAGE}\cftXafterpnum\par
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.
This controls the appearance of the title (and its preceding number, if any).   It \cftXfont
may  be  changed  using  \renewcommand.
Normally the section number is typeset within a box of width \cftXnumwidth. \cftXpresnum
\cftXaftersnum
\cftXaftersnumb
Within the box the macro \cftXpresnum is rst called, then the number is typeset,
9
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  ushleft.   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  dened  to  do  nothing.
In  the  standard  classes  the  ToC  entry  for  a  \part  is  just  typeset  as  the  num-
ber   and  title,   followed  by  the  page  number,   with  the   \cftpartpresnum  macro
being  called  before  typesetting  the  number  and  title.   Due  to  L
A
T
E
X  ideosyncra-
cies, \cftpartpresnum may become doubled in the output if a third-party package
behaves dierently to that of the default internal L
A
T
E
X commands.   The  tocloft
package contains specic code to prevent this in the case of the KomaScript classes
and  for  the  titlesec  package;   please  contact  the  maintainer  to  add  further  cor-
rections  if  you  discover  other  packages  which  also  exhibit  this  mis-behaviour.
When a standard class is used the \cftpartaftersnum and \cftpartaftersnumb
macros have no eect,  but they may do something if a non-standard class is used.
\cftXleader  denes   the   leader   between  the   title   and  the   page   number;   it \cftXleader
\cftXdotsep   can  be  changed  by  \renewcommand.   The  spacing  between  any  dots  in  the  leader
is   controlled  by   \cftXdotsep  (\@dotsep  in  Figure   1).   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 math  units  where
there  are  18mu  to  1em.
This  denes  the  font  to  be  used  for  typesetting  the  page  number.   It  can  be \cftXpagefont
changed  by  \renewcommand.
This  macro  is  called  after  the  page  number  has  been  typeset.   Its  default  is  to \cftXafterpnum
do  nothing.   It  can  be  changed  by  \renewcommand.
The   command   \cftsetindents{entry}{indent}{numwidth}   sets   the \cftsetindents
entrys indent  to the length indent and its numwidth  to the length numwidth.
The entry argument is the name of one of the standard entries (e.g., subsection)
or  the  name  of  entry  that  has  been  dened  with  the  tocloft  package.   For  example
\cftsetindents{figure}{0em}{1.5em}
will  make  gure  entries  left  justied.
Various   eects   can  be   achieved  by   changing   the   denitions   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  denitions
\newcommand{\cftXfont}{}
\newcommand{\cftXaftersnum}{}
\newcommand{\cftXaftersnumb}{}
\newcommand{\cftXleader}{\cftdotfill{\cftXdotsep}}
\newcommand{\cftXdotsep}{\cftdotsep}
\newcommand{\cftXpagefont}{}
\newcommand{\cftXafterpnum}{}
(Note  that  the  same  font  should  be  used  for  the  title,  leader  and  page  number  to
provide  a  coherent  appearance).
10
   To  eliminate  the  dots  in  the  leader:
\renewcommand{\cftXdotsep}{\cftnodots}
   To  put  something  (e.g.,  a  name)  before  the  title  (number):
\renewcommand{\cftXpresnum}{SOMETHING   }
   To  add  a  colon  after  the  section  number:
\renewcommand{\cftXaftersnum}{:}
   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:
\renewcommand{\cftXfont}{\bfseries}
\renewcommand{\cftXleader}{\bfseries\cftdotfill{\cftXdotsep}}
\renewcommand{\cftXpagefont}{\bfseries}
\renewcommand{\cftXpresnum}{SOMETHING   }
\renewcommand{\cftXaftersnum}{:}
\renewcommand{\cftXaftersnumb}{\\}
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  modication  as  well.
4
One  possible  method  of
adjusting  the  box  width  for  the  above  example  is:
\newlength{\mylen}   %   a   "scratch"   length
\settowidth{\mylen}{\bfseries\cftXpresnum\cftXaftersnum}   %   extra   space
\addtolength{\cftXnumwidth}{\mylen}   %   add   the   extra   space
   To  set  the  section  numbers  ushright:
5
\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}
4
Lyndon  Dudding  (lyndon.dudding@totalise.co.uk)  discovered  this.
5
With  thanks  to  David  Holz  (lbda@earthlink.net)  for  requesting  this.
11
In  the  above,   the  added  initial   \hfill  in  the  box  overrides  the  nal   \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.
   To  set  the  entry  ragged  left  (but  this  only  looks  good  for  single  line  titles):
\renewcommand{\cftXfont}{\hfill\bfseries}
\renewcommand{\cftXleader}{}
   To  set  the  page  number  immediately  after  the  entry  text  instead  of   at  the
righthand  margin:
\renewcommand{\cftXleader}{}
\renewcommand{\cftXafterpnum}{\cftparfillskip}
\renewcommand{\cftpnumalign}{l}
By  default  the  \parfillskip  value  is  locally  set  to  ll  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
tocloft package and is provided just so that the above eect 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.
   To  remove  the  space  inserted  between  table  and  gure  caption  entries  be-
tween  chapters:
\begingroup
\renewcommand*{\addvspace}[1]{}
\listoftables
\listoffigures
\endgroup
The command \cftpagenumbersoff{entry} will eliminate the page numbers \cftpagenumbersoff
\cftpagenumberson   for entry  in  the  listing,  where entry  is  the  name  of  one  of  the  standard  kinds
of   entries  (e.g.,   subsection,   or   figure    including  subfigure  if   the  subgure
package   is   used    etc.),   or   the   name   of   a  new  entry  dened  with  the   tocloft
package.
The   command  \cftpagenumberson{entry}  reverses   the   eect   of   a   corre-
sponding  \cftpagenumbersoff.
One  question  that  appeared  on  the  comp.text.tex  newsgroup  asked  how  to
get the titles of Appendices list in the ToC without  page numbers.   Here is a simple
way  of  doing  it,  assuming  the  document  has  chapters
...
12
\appendix
\addtocontents{toc}{\cftpagenumbersoff{chapter}}
\chapter{First   appendix}
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 subgure package you may want to eliminate the
page  numbers  for  the  subgure  captions.   This  can  be  accomplished  by:
\cftpagenumbersoff{subfigure}
At  this  point,   I  leave  it  up  to  your  ingenuity  as  to  other  eects  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.
2.4   New  list  of. . .
The   command   \newlistof[within]{entry}{ext}{listofname}   creates   a \newlistof
new  List  of  . . . ,  and  assorted  commands  to  go  along  with  it.
The  rst   required  argument, entry   is   used  to  dene  a  new  counter   called
entry.   The   optional within   argument   can  be   used  so  that   entry  gets   reset
to  one  every  time  the  counter  called  within  is  changed.   That  is,   the  rst  two
arguments  are  equivalent  to  calling  \newcounter{entry}[within].
The  next  argument, ext,   is  the  le  extension  for  the  new  List  of.   The  last
argument, listofname,   is   the  text   for   the  heading  of   the  new  List   of.   As   an
example:
\newcommand{\listanswername}{List   of   Answers}
\newlistof[chapter]{answer}{ans}{\listanswername}
will   create   a   new   answer   counter   that   will   be   reset   at   the   start   of   each
\chapter{...}.   Any  answer  titles  will   be  written  to  the  le  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.
\newcommand{\answer}[1]{%
\refstepcounter{answer}
\par\noindent\textbf{Answer   \theanswer.   #1}
\addcontentsline{ans}{answer}{\protect\numberline{\theanswer}#1}\par}
which,  when  used  like:
\answer{Hard}   The   \ldots  will  print  as:
Answer  1.   Hard
13
The  . . .
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 2.3, and Z is the new le extension and corresponds
to  the  Z  in  section  2.2.   Then,  among  others,  the  following  new  commands  will  be
made  available.
The ve commands, \cftmarkZ, \cftbeforeZtitleskip, \cftafterZtitleskip,
\cftZtitlefont,   and  \cftafterZtitle,   are  analogous  to  the  commands  of  the
same  names  described  in  section  2.2.
The  command  \listofX  is  similar  to  \listoftables,  etc.,  in  that  it  typesets \listofX
the  new  listing  at  the  point  where  it  is  called.
The command \Zdepth{number} is analogous to the standard \tocdepth{number} \Zdepth
command,   in  that  it  species  that  entries  in  the  new  listing  should  not  be  type-
set  if   their  numbering  level   is  greater  than number.   The  default  denition  is
\setcounter{Zdepth}{1}.
The   command   \newlistentry[within]{entry}{ext}{level-1}   creates \newlistentry
new  commands   for   typesetting  a  new  kind  of   entry  in  a  listing.   It   is   used  in-
ternally  by  the  \newlistof  command  but  may  be  used  independently.
The  rst   required  argument, entry   is   used  to  dene  a  new  counter   called
entry.   The  optional within  argument  can  be  used  so  that  entry  gets  reset  to
one  every  time  the  counter  called  within  is  changed.   That  is,   the  rst  two  ar-
guments  are  equivalent  to  calling  \newcounter{entry}[within].   The  second
required  argument, ext,   is  the  le  extension  for  the  entry  listing.   The  last  ar-
gument, 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 2.3.   Their
default  values  are  also  as  described  earlier.
The  default  values  of   \cftXindent  and  \cftXnumwidth  are  set  according  to
the  value  of   the level-1   argument   (i.e.,   N  in  this   example).   For   N=0  the  set-
tings   correspond  to  those  for   sections   in  non-chaptered  documents,   as   listed  in
Table  1.   For  N=4  the  settings  correspond  to  subparagraphs  in  non-chaptered  doc-
uments, 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.
\l@X  is  an  internal  command  that  typesets  an  entry  in  the  list,  and  is  dened \l@X
14
in terms of the above  \cft*X* commands.   It will not typeset an entry if  \Zdepth
is  N  or  less,  where  Z  is  the  listings  le  extension.
The command  \theX prints the value of the  X counter.   It is initially dened so \theX
that it prints arabic numerals.   If the optional within argument is used,  \theX is
dened  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.
\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}
And  then:
\answer{Harder}   The   \ldots
\subanswer{Reformulate   the   problem}   It   assists   \ldots
will  be  typeset  as:
Answer  2.   Harder
The  . . .
2.a)  Reformulate  the  problem  It  assists  . . .
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  o  page  numbering  for  the  subanswers,  do
\cftpagenumbersoff{subanswer}
As  another  example  of  \newlistentry,  suppose  that  an  extra  sectioning  divi-
sion below  subparagraph is required, called  subsubpara.   The  \subsubpara com-
mand itself can be dened via the LaTeX kernel \@startsection command.   Also
it  is  necessary  to  dene  a  \subsubparamark  macro,  a  new  subsubpara  counter,  a
\thesubsubpara macro and a  \l@subsubpara macro.   Using the tocloft packages
\newlistentry takes care of most of these as shown below (remember the caveats
about  commands  with  @  signs  in  them).
\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
15
}
\newlistentry[subparagraph]{subsubpara}{toc}{5}
\cftsetindents{subsubpara}{14.0em}{7.0em}
\newcommand*{\subsubparamark}[1]{}   %   gobble   heading   mark
Each  List  of. . . uses  a  le  to  store  the  list  entries,  and  these  les  must  remain
open  for   writing  throughout   the  document   processing.   TeX  has   only  a  limited
number   of   les   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  les  (e.g.,   no  index  or  bibliography  output  les)  the  maximum  number
of  LoXs,  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:
No   room   for   a   new   write
If  you  get  such  a  message  the  only  recourse  is  to  redesign  your  document.
The tocloft package does not provide a simple means of specifying new Lists of
Floats or oat environments.   For those, I recommend the ccaption package [Wil01].
2.5   Experimental  utilities
The  macros  described  in  this  section  are  even  more  experimental   than  those  de-
scribed  previously.
Some  old  style  novels,   and  even  some  modern  text   books,
6
include  a  short \cftchapterprecis
synopsis of the contents of the chapter either immediately after the chapter heading
or  in  the  Toc,  or  in  both  places.
The  command  \cftchapterprecis{text}  prints   its   argument   both  at   the
point  in  the  document  where  it  is  called,   and  also  adds  it  to  the  .toc  le.   For
example:
...
\chapter{}   %   first   chapter
\cftchapterprecis{Our   hero   is   introduced;   family   tree;   early   days.}
...
The \cftchapterprecis command calls these two commands to print the text \cftchapterprecishere
\cftchapterprecistoc   in the document (the \...here{text} command) and to put it into the ToC (the
\...toc{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  gure  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.
The command \cftlocalchange{le}{pnumwidth}{tocrmarg} will write \cftlocalchange
6
For  example,  Robert  Sedgewick,  Algorithms,  Addison-Wesley,  1983.
16
an entry into le 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.
The  command  \cftaddtitleline{le}{kind}{title}{page}  will   write \cftaddtitleline
a  \contentsline  entry  into le  for  a kind  entry  with  title title  and  page
number page.   That  is,  an  entry  is  made  of  the  form:
\contentsline{kind}{title}{page}
Any  fragile  commands  used  in  the  arguments  must  be  protected.
The command \cftaddnumtitleline{le}{kind}{num}{title}{page} \cftaddnumtitleline
is similar except that it also includes 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  L
A
T
E
X
values  for  \@pnumwidth  and  \@tocrmarg  are  1.55em  and  2.55em  respectively,  one
might  do  the  following  for  a  gure  on  the  frontispiece  page.
...
%   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
...
Recall   that   a  \caption  command  will   put   an  entry  in  the   .lof  le,   which  is
not   wanted  here.   If   a  caption  is   required,   then  you  can  either   craft   one  your-
self  or,   assuming  that  your  general   captions  are  not  too  exotic,   use  the  \legend
command  from  the   ccaption  package.   If   the   illustration  is   numbered,   use   the
\cftaddnumtitleline  command  instead  of  \cftaddtitleline.
2.6   Usage  with  other  packages
The  tocloft  and  tocbibind  packages  can  be  used  together  in  the  same  document.
The  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:
   The   1998/11/15   version   of   tocbibind   may   give   surprising   results   if   the
\toctocname,   \toclotname   or   \toclofname   commands   have   been  used.
You  should  consider  getting  the  current  version  of   tocbibind.
   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 tocloft package will not know how to dene the corresponding \l@clause
17
command).   In  such  a  case  you  will   have  to  supply  the  appropriate  macros
yourself.
Some packages, like the oat package by Anselm Lingnau, enable the creation of \@cftbsnum
\@cftasnum
\@cftasnumb
other kinds of List of . . . .   The 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  oat  package,   new  kinds  of   oat  environments  and  their
associated lists can be created on the y 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  dened  to  do
nothing,  but  may  be  renewed  to  do  something.
The  tocloft  and  minitoc  packages  have  an  unfortunate  interaction,
7
which  for-
tunately  can  be  xed.   In  the  normal   course  of  events,   when  minitoc  is  used  in  a
chaptered  document  it  will  typeset  section  entries  in  the  minitocs  in  bold  font.   If
tocloft   is  used  in  conjunction  with  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:
\renewcommand{\mtcSfont}{\small\normalfont}
in  the  preamble.
Otherwise,  the  cure  is  the  following  incantation:
\renewcommand{\cftsecfont}{\bfseries}
\renewcommand{\cftsecleader}{\bfseries\cftdotfill{\cftdotsep}}
\renewcommand{\cftsecpagefont}{\bfseries}
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  rst  \chapter  command.
In general, use with other packages that redene any of the macros that tocloft
also  modies  is  likely  to  be  problematic.
3   The  package  code
Announce  the  name  and  version  of   the  package,   which  requires  L
A
T
E
X2
  but  no
extra  packages.
1 *usc
2  \NeedsTeXFormat{LaTeX2e}
3  \ProvidesPackage{tocloft}[2013/05/02   v2.3f   parameterised   ToC,   etc.,   typesetting]
7
Discovered  by  Lyndon  Dudding  (lyndon.dudding@totalise.co.uk).
18
In order to try and avoid name clashes with other packages, each internal name
will  include  the  character  string  @cft.
\@cftquit
\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.
4  \newcommand{\@cftquit}{}
5  \newif\if@cfthaschapter
\if@cftkoma   The  koma  classes  have  dierent  defaults  than  the  standard  classes,  so  we  need  to
know  if  a  koma  class  has  been  loaded.
6  \newif\if@cftkoma
7  \@cftkomafalse
8  \@ifclassloaded{scrartcl}{\@cftkomatrue}{}
9  \@ifclassloaded{scrreprt}{\@cftkomatrue}{}
10  \@ifclassloaded{scrbook}{\@cftkomatrue}{}
\if@cfttitlesec
11  \newif\if@cfttitlesec
12  \AtBeginDocument{\@ifpackageloaded{titlesec}{\@cfttitlesectrue}{}}
Issue a warning if there are no recognised sectional divisions and then skip the
rest  of  the  package  code.
13  \@ifundefined{chapter}{%
14   \@cfthaschapterfalse
15   \@ifundefined{section}{%
16   \PackageWarning{tocloft}%
17   {I   dont   recognize   any   sectional   divisions   so   Ill   do   nothing}
18   \renewcommand{\@cftquit}{\endinput}
19   }{\PackageInfo{tocloft}{The   document   has   section   divisions}}
20   }{\@cfthaschaptertrue
21   \PackageInfo{tocloft}{The   document   has   chapter   divisions}}
Perhaps  quit  now.
22  \@cftquit
Use  chapter  style  if  \if@cfthaschapter  is  TRUE,  otherwise  section  style.
\if@cfttocbibind   A ag that is set TRUE i the tocbibind package has been loaded.   The 1998/11/15
version  of   tocbibind  does  not  necessarily  work  well  with  tocloft.
23  \newif\if@cfttocbibind
24  \AtBeginDocument{%
25   \@ifpackageloaded{tocbibind}{\@cfttocbibindtrue}{\@cfttocbibindfalse}
26   \if@cfttocbibind
27   \@ifpackagelater{tocbibind}{1998/11/16}{}{%
28   \PackageWarning{tocloft}{%
29  You   are   using   a   version   of   the   tocbibind   package\MessageBreak
30  that   is   not   compatible   with   tocloft.\MessageBreak
31  The   results   may   be   surprising.\MessageBreak
32  Consider   installing   the   current   version   of   tocbibind.}}
33   \fi
34  }
19
\if@cftnctoc   A  boolean  used  to  implement  the  titles  option.   It  is  TRUE  if  the  ToC,  LoT,  LoF
titles  should  use  the  default  styles.
35  \newif\if@cftnctoc\@cftnctocfalse
36  \DeclareOption{titles}{\@cftnctoctrue}
37   %%   \ProcessOptions\relax
\if@cftsubfigopt   A  boolean  used  to  implement  the  subgure  option.
38  \newif\if@cftsubfigopt\@cftsubfigoptfalse
39  \DeclareOption{subfigure}{\@cftsubfigopttrue}
Process  the  options.
40
41  \ProcessOptions\relax
42
\tocloftpagestyle
\@cftpagestyle
A  user-level   macro  to  set  the  pagestyle  for  the  rst  page  of   the  ToC,   etc.   The
default  is  the  plain  pagestyle.
43  \newcommand{\tocloftpagestyle}[1]{%
44   \def\@cftpagestyle{\thispagestyle{#1}}}
45  \tocloftpagestyle{plain}
46
\cftmarktoc
\cftmarklof
\cftmarklot
These  three  macros  set  the  style  for  running  heads.   They  are  initialised  to  give
the  default  appearance.
47  \newcommand{\cftmarktoc}{%
48   \@mkboth{\MakeUppercase\contentsname}{\MakeUppercase\contentsname}}
49  \newcommand{\cftmarklof}{%
50   \@mkboth{\MakeUppercase\listfigurename}{\MakeUppercase\listfigurename}}
51  \newcommand{\cftmarklot}{%
52   \@mkboth{\MakeUppercase\listtablename}{\MakeUppercase\listtablename}}
53  \if@cftkoma
54   \renewcommand{\cftmarktoc}{%
55   \@mkboth{\contentsname}{\contentsname}}
56   \renewcommand{\cftmarklof}{%
57   \@mkboth{\listfigurename}{\listfigurename}}
58   \renewcommand{\cftmarklot}{%
59   \@mkboth{\listtablename}{\listtablename}}
60  \fi
\@cfttocstart
\@cfttocfinish
Two macros to perform the actions at the beginning and end of the \tableofcontents
command  (and  friends).   \@cfttocstart  deals  with  chaptered  documents,  ensur-
ing  that  the  ToC  is  typeset  in  a  single  column  (see  classes.dtx  for  the  original
code).   These  macros  are  also  provided  by  the  ccaption  package.
61  \providecommand{\@cfttocstart}{%
62   \if@cfthaschapter
63   \if@twocolumn
64   \@restonecoltrue\onecolumn
65   \else
20
66   \@restonecolfalse
67   \fi
68   \fi}
\@cfttocfinish  resets,  if  required,  twocolumn  typesetting.
69  \providecommand{\@cfttocfinish}{%
70   \if@cfthaschapter
71   \if@restonecol\twocolumn\fi
72   \fi}
\phantomsection   This  is  provided  because  the  hyperref   package  screws  with  \addcontentsline.
73  \providecommand{\phantomsection}{}
74
\@cftdobibtoc   If the tocbibind package has been used and it has redened  \tableofcontents we
need  to  cater  for  that.   The  contents  of  the  denition  are  dened  in  tocbibind.
75  \newcommand{\@cftdobibtoc}{%
76   \if@dotoctoc
77   \if@bibchapter
78   \phantomsection
79   \addcontentsline{toc}{chapter}{\contentsname}
80   \else
81   \phantomsection
82   \addcontentsline{toc}{\@tocextra}{\contentsname}
83   \fi
84   \fi}
85
\cftparskip   The  \parskip  local  to  the  ToC,  etc.,  is  set  to  the  length  \cftparskip.
86  \newlength{\cftparskip}
87  \setlength{\cftparskip}{0pt}
88
\tableofcontents   This is a parameterised version of the default \tableofcontents command.   Each
class  has  its  own  denition,   but  we  have  to  cater  for  all  classes  in  one  denition,
hence  some  of  the  checks.   The  denition  is  modied  after  all  packages  have  been
loaded.
If  the  titles  option  has  been  used,  then  the  command  is  not  modied.
89  \AtBeginDocument{%
90  \if@cftnctoc\else
91   \renewcommand{\tableofcontents}{%
92   \@cfttocstart
Ensure  that  any  previous  paragraph  has  been  nished.   Within  a  group  set  the
local  paragraphing  style  and  typeset  the  title.
93   \par
94   \begingroup
95   \parindent\z@   \parskip\cftparskip
96   \@cftmaketoctitle
21
If   tocbibind  has  been  used,  then  add  the  ToC  name  to  the  ToC.
97   \if@cfttocbibind
98   \@cftdobibtoc
99   \fi
Finally,  read  the  .toc  le  and  nish  up.
100   \@starttoc{toc}%
101   \endgroup
102   \@cfttocfinish}
103  \fi
104  }
\@cftmaketoctitle   This  command  typesets  the  title  for  the  ToC.
105  \newcommand{\@cftmaketoctitle}{%
106   \addpenalty\@secpenalty
107   \if@cfthaschapter
108   \vspace*{\cftbeforetoctitleskip}%
109   \else
110   \vspace{\cftbeforetoctitleskip}%
111   \fi
112   \@cftpagestyle
113   {\interlinepenalty\@M
114   {\cfttoctitlefont\contentsname}{\cftaftertoctitle}%
115   \cftmarktoc
116   \par\nobreak
117   \vskip   \cftaftertoctitleskip
118   \@afterheading}}
\cftbeforetoctitleskip
\cftaftertoctitleskip
These  two  lengths  control  the  vertical  spacing  before  and  after  the  ToC  title.
119  \newlength{\cftbeforetoctitleskip}
120  \newlength{\cftaftertoctitleskip}
Their   values   depend  on  whether   the   document   has   chapters   or   not.   In  chap-
tered  documents  the  default  ToC  title  is  typeset  as  a  \chapter*,   otherwise  as  a
\section*.
121  \if@cfthaschapter
122   \setlength{\cftbeforetoctitleskip}{50pt}
123   \setlength{\cftaftertoctitleskip}{40pt}
124  \else
125   \setlength{\cftbeforetoctitleskip}{3.5ex   \@plus   1ex   \@minus   .2ex}
126   \setlength{\cftaftertoctitleskip}{2.3ex   \@plus.2ex}
127  \fi
\cfttoctitlefont
\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  redened  to  do  other  things  (e.g.,   adding  an
\hfill  to  \cfttoctitlefont  will  make  the  title  ushright).
128  \if@cfthaschapter
129   \newcommand{\cfttoctitlefont}{\normalfont\Huge\bfseries}
22
130   \if@cftkoma\renewcommand{\cfttoctitlefont}{\size@chapter\sectfont}\fi
131  \else
132   \newcommand{\cfttoctitlefont}{\normalfont\Large\bfseries}
133   \if@cftkoma\renewcommand{\cfttoctitlefont}{\size@section\sectfont}\fi
134  \fi
135  \newcommand{\cftaftertoctitle}{}
\cftsetpnumwidth
\cftsetrmarg
Users  commands  for  setting  \@pnumwidth  and  \@tocrmarg.
136  \newcommand{\cftsetpnumwidth}[1]{\renewcommand{\@pnumwidth}{#1}}
137  \newcommand{\cftsetrmarg}[1]{\renewcommand{\@tocrmarg}{#1}}
\cftpnumalign   Alignment  string  (as  input  to  \makebox  for  the  page  number  box.
138  \newcommand{\cftpnumalign}{r}
\cftdot
\cftdotfill
In the default ToC, a dotted line can be used to provide a leader between a title and
the  page  number.   The  denition  of  this  leader  is  buried  in  the  \@dottedtocline
command.   The  \cftdotfill{sep}  command  provides  a  parameterised  version
of   the  leader  code,   where 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  ccaption  package.
139  \providecommand{\cftdot}{.}
140  \providecommand{\cftdotfill}[1]{%
141   \def\@tempa{#1}%
142   \def\@tempb{\cftnodots}%
143   \ifx\@tempa\@tempb
144   \hfill
145   \else
146   \leaders\hbox{$\m@th\mkern   #1   mu\hbox{\cftdot}\mkern   #1   mu$}\hfill
147   \fi
148  }
\cftdotsep
\cftnodots
\cftdotsep holds the default dot separation, and is also provided by the 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  ag  for  a  conditional   branch,   so  its  numerical   value  isnt  as  important
now.)
149  \providecommand{\cftdotsep}{4.5}
150  \newcommand{\cftnodots}{5000}
Now  for  the  trickier  bits  regarding  the  typesetting  of  the  ToC  entries.
A .toc (also .lof and .lot) le consists of a list of \contentsline{kind}{title}{page}
commands, where kind is the kind of heading (e.g., part or section or figure),
title is the title text (including the number), and page is the page number.   The
entries are inserted into the le by calling the \addcontentsline{le}{kind}{title}
command,   where le  is  the  le  extension  (e.g.,   toc,   lot)  and  the  other  argu-
ments  are  the  same  as  for  the  \contentsline  command.   (Arbitrary  stu  may
also  be  put  into  the  le  via  the  \addtocontents{le}{text}  command).   The
typesetting  of  the  \contentsline  entries  is  performed  by  commands  of  the  form
23
\l@kind.   The  sectioning  and  captioning  commands   call   \addcontentsline  to
insert  their  titles  into  the  .toc  etc.,  les.
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 title  argument
within  \contentsline.   They  could  be  handled  separately  if  the  \contentsline
command was suitably modied.   If this was done,  then the  \addtocontentsline
command  would  also  need  to  be  changed  which  would  then  require  the  section-
ing  and  captioning  commands  to  be  modied  as  well.   This  is  certainly  possible,
but   would  cause  problems   if   any  other   package  also  modied  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  denitions  consist  of  inlined  versions  of  the  code
for  \@dottedtocline.
\cftparfillskip   The \l@kind commands modify (locally) the value of \parfillskip.   \cftparfillskip
is  a  copy  of  the  default  T
E
Xbook  \parfillskip  denition.
151  \newcommand{\cftparfillskip}{\parfillskip=0pt   plus1fil}
\numberline   The   purpose   of   the   \numberline{secnum}  command  is   to  typeset secnum
left  justied  in  a  box  of  width  \@tempdima.   I  redene  it  to  add  three  additional
parameters, namely  \@cftbsnum,  \@cftasnum and  \@cftasnumb (see  ltsect.dtx
for  the  original  denition).
152  \renewcommand{\numberline}[1]{%
153   \hb@xt@\@tempdima{\@cftbsnum   #1\@cftasnum\hfil}\@cftasnumb}
\@cftbsnum
\@cftasnum
\@cftasnumb
Originally  these  were  not  dened  but  were  \let  to  appropriate  commands  in  the
\l@... commands, but they have to be dened in case something unexpected calls
\numberline,  for  example  through  use  of  the  oat  package.
8
154  \newcommand{\@cftbsnum}{}
155  \newcommand{\@cftasnum}{}
156  \newcommand{\@cftasnumb}{}
\l@part
\if@cftdopart
\l@part{title}{page}  typesets  the  ToC  entry  for  a  part  heading.   It  is  a  pa-
rameterised  copy  of   the  default  \l@part  (see  classes.dtx  for  the  original   de-
nition  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.
157  \newif\if@cftdopart
158  \newif\if@cfthaspart
159  \@ifundefined{part}{\@cfthaspartfalse}{\@cfthasparttrue}
160  \if@cfthaspart
8
This  bug  was  discovered  by  Andrew  Thurber  when  using  the  tocloft  and  algorithm  packages
together.
24
161  \renewcommand*{\l@part}[2]{%
162   \@cftdopartfalse
163   \ifnum   \c@tocdepth   >-2\relax
164   \if@cfthaschapter
165   \@cftdoparttrue
166   \fi
167   \ifnum   \c@tocdepth   >\m@ne
168   \if@cfthaschapter\else
169   \@cftdoparttrue
170   \fi
171   \fi
172   \fi
173   \if@cftdopart
174   \if@cfthaschapter
175   \addpenalty{-\@highpenalty}%
176   \else
177   \addpenalty\@secpenalty
178   \fi
179   \addvspace{\cftbeforepartskip}%
180   \begingroup
181   {\leftskip   \cftpartindent\relax
182   \rightskip   \@tocrmarg
183   \parfillskip   -\rightskip
184   \parindent   \cftpartindent\relax\@afterindenttrue
185   \interlinepenalty\@M
186   \leavevmode
187   \@tempdima   \cftpartnumwidth\relax
188   \let\@cftbsnum   \cftpartpresnum
189   \let\@cftasnum   \cftpartaftersnum
190   \let\@cftasnumb   \cftpartaftersnumb
191   \advance\leftskip   \@tempdima   \null\nobreak\hskip   -\leftskip
In  default  L
A
T
E
X,   the  part  ToC  entry  is  written  without  \numberline  and  hence
the  presnum   needs  to  be  inserted  manually.   In  Koma-Script  and  titlesec  (and
probably  otherslet  me  know!),  however,  this  is  not  the  case.
192   {\cftpartfont   \if@cftkoma\else\if@cfttitlesec\else\cftpartpresnum\fi\fi   #1}%
193   \cftpartfillnum{#2}}
194   \nobreak
195   \if@cfthaschapter
196   \global\@nobreaktrue
197   \everypar{\global\@nobreakfalse\everypar{}}%
198   \else
199   \if@compatibility
200   \global\@nobreaktrue
201   \everypar{\global\@nobreakfalse\everypar{}}%
202   \fi
203   \fi
204   \endgroup
205   \fi}
206  \fi
25
\cftbeforepartskip
\cftpartnumwidth
\cftpartfont
\cftpartpresnum
\cftpartaftersnum
\cftpartaftersnumb
\cftpartleader
\cftpartdotsep
\cftpartpagefont
\cftpartafterpnum
\cftpartindent
\cftpartfillnum
These are the user commands to control the typesetting of Part entries.   They are
initialised  to  give  the  standard  appearance.
207  \if@cfthaspart
208   \newlength{\cftbeforepartskip}
209   \setlength{\cftbeforepartskip}{2.25em   \@plus\p@}
210   \newlength{\cftpartnumwidth}
211   \setlength{\cftpartnumwidth}{0em}
212   \newcommand{\cftpartfont}{\large\bfseries}
213   \newcommand{\cftpartpresnum}{}
214   \newcommand{\cftpartaftersnum}{}
215   \newcommand{\cftpartaftersnumb}{}
216   \newcommand{\cftpartleader}{\large\bfseries\cftdotfill{\cftpartdotsep}}
217   \newcommand{\cftpartdotsep}{\cftnodots}
218   \newcommand{\cftpartpagefont}{\large\bfseries}
219   \newcommand{\cftpartafterpnum}{}
220   \newlength{\cftpartindent}
221   \setlength{\cftpartindent}{0em}
222   \newcommand{\cftpartfillnum}[1]{%
223   {\cftpartleader}%
224   {\makebox[\@pnumwidth][\cftpnumalign]{\cftpartpagefont   #1}\cftpartafterpnum\par}%
225   }
koma  classes  use  some  dierent  settings.
226   \if@cftkoma
227   \setlength{\cftpartnumwidth}{2em}
228   \renewcommand{\cftpartfont}{\sectfont\large}
229   \renewcommand{\cftpartpagefont}{\sectfont\large}
230   \fi
231  \fi
\l@chapter   \l@chapter{title}{page}  typesets  the  ToC  entry  for  a  chapter  heading.   It  is
a parameterised copy of the default \l@chapter (see classes.dtx for the original
denition).   This  only  applies  to  chaptered  documents.
232  \if@cfthaschapter
233  \renewcommand*{\l@chapter}[2]{%
234   \ifnum   \c@tocdepth   >\m@ne
235   \addpenalty{-\@highpenalty}%
236   \vskip   \cftbeforechapskip
237   {\leftskip   \cftchapindent\relax
238   \rightskip   \@tocrmarg
239   \parfillskip   -\rightskip
240   \parindent   \cftchapindent\relax\@afterindenttrue
241   \interlinepenalty\@M
242   \leavevmode
243   \@tempdima   \cftchapnumwidth\relax
244   \let\@cftbsnum   \cftchappresnum
245   \let\@cftasnum   \cftchapaftersnum
246   \let\@cftasnumb   \cftchapaftersnumb
247   \advance\leftskip   \@tempdima   \null\nobreak\hskip   -\leftskip
248   {\cftchapfont   #1}\nobreak
26
249   \cftchapfillnum{#2}}%
250   \fi}%
251  \fi
\cftbeforechapskip
\cftchapindent
\cftchapnumwidth
\cftchapfont
\cftchappresnum
\cftchapaftersnum
\cftchapaftersnumb
\cftchapleader
\cftchapdotsep
\cftchappagefont
\cftchapafterpnum
\cftchapfillnum
These  are the  user  commands  to control  the typesetting  of  Chapter  entries.   They
are  initialised  to  give  the  standard  appearance.
252  \if@cfthaschapter
253   \newlength{\cftbeforechapskip}
254   \setlength{\cftbeforechapskip}{1.0em   \@plus\p@}
255   \newlength{\cftchapindent}
256   \setlength{\cftchapindent}{0em}
257   \newlength{\cftchapnumwidth}
258   \setlength{\cftchapnumwidth}{1.5em}
259   \newcommand{\cftchapfont}{\bfseries}
260   \newcommand{\cftchappresnum}{}
261   \newcommand{\cftchapaftersnum}{}
262   \newcommand{\cftchapaftersnumb}{}
263   \newcommand{\cftchapleader}{\bfseries\cftdotfill{\cftchapdotsep}}
264   \newcommand{\cftchapdotsep}{\cftnodots}
265   \newcommand{\cftchappagefont}{\bfseries}
266   \newcommand{\cftchapafterpnum}{}
267   \newcommand{\cftchapfillnum}[1]{%
268   {\cftchapleader}\nobreak
269   \makebox[\@pnumwidth][\cftpnumalign]{\cftchappagefont   #1}\cftchapafterpnum\par
270   }
koma  classes  have  dierent  chapter  settings.
271   \if@cftkoma
272   \renewcommand{\cftchapfont}{\sectfont}
273   \fi
274  \fi
275
\l@section   \l@section{title}{page}  typesets  the  ToC  entry  for  a  section  heading.   It  is
a parameterised copy of the default \l@section (see classes.dtx for the original
denition).
276  \renewcommand*{\l@section}[2]{%
277   \ifnum   \c@tocdepth   >\z@
278   \if@cfthaschapter
279   \vskip   \cftbeforesecskip
280   \else
281   \addpenalty\@secpenalty
282   \addvspace{\cftbeforesecskip}
283   \fi
284   {\leftskip   \cftsecindent\relax
285   \rightskip   \@tocrmarg
286   \parfillskip   -\rightskip
287   \parindent   \cftsecindent\relax\@afterindenttrue
288   \interlinepenalty\@M
289   \leavevmode
27
290   \@tempdima   \cftsecnumwidth\relax
291   \let\@cftbsnum   \cftsecpresnum
292   \let\@cftasnum   \cftsecaftersnum
293   \let\@cftasnumb   \cftsecaftersnumb
294   \advance\leftskip   \@tempdima   \null\nobreak\hskip   -\leftskip
295   {\cftsecfont   #1}\nobreak
296   \cftsecfillnum{#2}}%
297   \fi}
\cftbeforesecskip
\cftsecindent
\cftsecnumwidth
\cftsecfont
\cftsecpresnum
\cftsecaftersnum
\cftsecaftersnumb
\cftsecleader
\cftsecdotsep
\cftsecpagefont
\cftsecafterpnum
\cftsecfillnum
These  are  the  user  commands  to  control  the  typesetting  of  Section  entries.   They
are  initialised  to  give  the  standard  appearance.
298  \newlength{\cftbeforesecskip}
299  \newlength{\cftsecindent}
300  \newlength{\cftsecnumwidth}
301  \newcommand{\cftsecpresnum}{}
302  \newcommand{\cftsecaftersnum}{}
303  \newcommand{\cftsecaftersnumb}{}
304  \if@cfthaschapter
305   \setlength{\cftbeforesecskip}{\z@   \@plus.2\p@}
306   \setlength{\cftsecindent}{1.5em}
307   \setlength{\cftsecnumwidth}{2.3em}
308   \newcommand{\cftsecfont}{\normalfont}
309   \newcommand{\cftsecleader}{\normalfont\cftdotfill{\cftsecdotsep}}
310   \newcommand{\cftsecdotsep}{\cftdotsep}
311   \newcommand{\cftsecpagefont}{\normalfont}
312  \else
313   \setlength{\cftbeforesecskip}{1.0em   \@plus\p@}
314   \setlength{\cftsecindent}{0em}
315   \setlength{\cftsecnumwidth}{1.5em}
316   \newcommand{\cftsecfont}{\bfseries}
317   \newcommand{\cftsecleader}{\bfseries\cftdotfill{\cftsecdotsep}}
318   \newcommand{\cftsecdotsep}{\cftnodots}
319   \newcommand{\cftsecpagefont}{\bfseries}
320  \fi
321  \newcommand{\cftsecafterpnum}{}
322  \newcommand{\cftsecfillnum}[1]{%
323   {\cftsecleader}\nobreak
324   \makebox[\@pnumwidth][\cftpnumalign]{\cftsecpagefont   #1}\cftsecafterpnum\par
325  }
\l@subsection   \l@subsection{title}{page}  typesets  the  ToC  entry  for  a  subsection  head-
ing.   It  is  a  parameterised  copy  of  the  default  \l@subsection  (see  classes.dtx
for  the  original  denition).
326  \renewcommand*{\l@subsection}[2]{%
Only  typeset  the  entry  if  it  falls  within  the  tocdepth.
327   \ifnum   \c@tocdepth   >\@ne
Add  some  vertical  space.
328   \vskip   \cftbeforesubsecskip
28
Start a group to keep paragraphing changes local.   Set the \leftskip to the entrys
indentation.
329   {\leftskip   \cftsubsecindent\relax
Set  the  \rightskip  to  \@tocrmarg  to  leave  room  for  the  page  number.
330   \rightskip   \@tocrmarg
Ensure  that  the  last  line  of   the  entry  will   be  lled.   Setting  \parfillskip  to  a
negative  number  prevents  any  overfull  box  messages.
331   \parfillskip   -\rightskip
Set  the  paragraph  indent  to  the  entrys  indentation.
332   \parindent   \cftsubsecindent\relax\@afterindenttrue
Try  and  prevent  breaks  between  lines  in  a  multiple  line  entry.
333   \interlinepenalty\@M
Make  sure  that  we  have  left  vertical  mode.
334   \leavevmode
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  dened.   We  set  all  these  to  the  values  for  this  entry.
335   \@tempdima   \cftsubsecnumwidth\relax
336   \let\@cftbsnum   \cftsubsecpresnum
337   \let\@cftasnum   \cftsubsecaftersnum
338   \let\@cftasnumb   \cftsubsecaftersnumb
Arrange  that  the  (section  number  and)  rst  line  of  the  title  is  set  at  the  current
indent,  and  any  further  lines  are  further  indented.
339   \advance\leftskip   \@tempdima   \null\nobreak\hskip   -\leftskip
Print  the  (number  and)  title,  prohibiting  any  breaking.
340   {\cftsubsecfont   #1}\nobreak
Print  the  leader  and  the  page  number,  and  close  the  group.
341   \cftsubsecfillnum{#2}}%
342   \fi}
\cftbeforesubsecskip
\cftsubsecindent
\cftsubsecnumwidth
\cftsubsecfont
\cftsubsecpresnum
\cftsubsecaftersnum
\cftsubsecaftersnumb
\cftsubsecleader
\cftsubsecdotsep
\cftsubsecpagefont
\cftsubsecafterpnum
These  are  the  user  commands  to  control   the  typesetting  of   Sub-section  entries.
They  are  initialised  to  give  the  standard  appearance.
343  \newlength{\cftbeforesubsecskip}
344   \setlength{\cftbeforesubsecskip}{\z@   \@plus.2\p@}
345  \newlength{\cftsubsecindent}
346  \newlength{\cftsubsecnumwidth}
347  \if@cfthaschapter
348   \setlength{\cftsubsecindent}{3.8em}
349   \setlength{\cftsubsecnumwidth}{3.2em}
350  \else
351   \setlength{\cftsubsecindent}{1.5em}
352   \setlength{\cftsubsecnumwidth}{2.3em}
353  \fi
29
354  \newcommand{\cftsubsecfont}{\normalfont}
355  \newcommand{\cftsubsecpresnum}{}
356  \newcommand{\cftsubsecaftersnum}{}
357  \newcommand{\cftsubsecaftersnumb}{}
358  \newcommand{\cftsubsecleader}{\normalfont\cftdotfill{\cftsubsecdotsep}}
359  \newcommand{\cftsubsecdotsep}{\cftdotsep}
360  \newcommand{\cftsubsecpagefont}{\normalfont}
361  \newcommand{\cftsubsecafterpnum}{}
\cftsubsecfillnum   \cftsubsecfillnum{page}   typesets   the   leader   and   the  page   number   of   a
subsection  entry.   First  print  the  leader  and  then,   with  no  break,   set  the  page
number   ushright   in  a  box  of   width  \@pnumwidth,   not   forgetting  to  nish  the
paragraph.
362  \newcommand{\cftsubsecfillnum}[1]{%
363   {\cftsubsecleader}\nobreak
364   \makebox[\@pnumwidth][\cftpnumalign]{\cftsubsecpagefont   #1}\cftsubsecafterpnum\par
365  }
\l@subsubsection   \l@subsubsection{title}{page} typesets the ToC entry for a  subsubsection
heading.   It   is   a   parameterised   copy   of   the   default   \l@subsubsection   (see
classes.dtx  for  the  original  denition).
366  \renewcommand*{\l@subsubsection}[2]{%
367   \ifnum   \c@tocdepth   >\tw@
368   \vskip   \cftbeforesubsubsecskip
369   {\leftskip   \cftsubsubsecindent\relax
370   \rightskip   \@tocrmarg
371   \parfillskip   -\rightskip
372   \parindent   \cftsubsubsecindent\relax\@afterindenttrue
373   \interlinepenalty\@M
374   \leavevmode
375   \@tempdima   \cftsubsubsecnumwidth\relax
376   \let\@cftbsnum   \cftsubsubsecpresnum
377   \let\@cftasnum   \cftsubsubsecaftersnum
378   \let\@cftasnumb   \cftsubsubsecaftersnumb
379   \advance\leftskip   \@tempdima   \null\nobreak\hskip   -\leftskip
380   {\cftsubsubsecfont   #1}\nobreak
381   \cftsubsubsecfillnum{#2}}%
382   \fi}
\cftbeforesubsubsecskip
\cftsubsubsecindent
\cftsubsubsecnumwidth
\cftsubsubsecfont
\cftsubsubsecpresnum
\cftsubsubsecaftersnum
\cftsubsubsecaftersnumb
\cftsubsubsecleader
\cftsubsubsecdotsep
\cftsubsubsecpagefont
\cftsubsubsecafterpnum
\cftsubsubsecfillnum
These are the user commands to control the typesetting of Sub-sub-section entries.
They  are  initialised  to  give  the  standard  appearance.
383  \newlength{\cftbeforesubsubsecskip}
384   \setlength{\cftbeforesubsubsecskip}{\z@   \@plus.2\p@}
385  \newlength{\cftsubsubsecindent}
386  \newlength{\cftsubsubsecnumwidth}
387  \if@cfthaschapter
388   \setlength{\cftsubsubsecindent}{7.0em}
389   \setlength{\cftsubsubsecnumwidth}{4.1em}
390  \else
30
391   \setlength{\cftsubsubsecindent}{3.8em}
392   \setlength{\cftsubsubsecnumwidth}{3.2em}
393  \fi
394  \newcommand{\cftsubsubsecfont}{\normalfont}
395  \newcommand{\cftsubsubsecpresnum}{}
396  \newcommand{\cftsubsubsecaftersnum}{}
397  \newcommand{\cftsubsubsecaftersnumb}{}
398  \newcommand{\cftsubsubsecleader}{\normalfont\cftdotfill{\cftsubsubsecdotsep}}
399  \newcommand{\cftsubsubsecdotsep}{\cftdotsep}
400  \newcommand{\cftsubsubsecpagefont}{\normalfont}
401  \newcommand{\cftsubsubsecafterpnum}{}
402  \newcommand{\cftsubsubsecfillnum}[1]{%
403   {\cftsubsubsecleader}\nobreak
404   \makebox[\@pnumwidth][\cftpnumalign]{\cftsubsubsecpagefont   #1}\cftsubsubsecafterpnum\par
405  }
\l@paragraph   \l@paragraph{title}{page}  typesets  the  ToC  entry  for  a  paragraph  heading.
It  is  a  parameterised  copy  of  the  default  \l@paragraph  (see  classes.dtx  for  the
original  denition).
406  \renewcommand*{\l@paragraph}[2]{%
407   \ifnum   \c@tocdepth   >3\relax
408   \vskip   \cftbeforeparaskip
409   {\leftskip   \cftparaindent\relax
410   \rightskip   \@tocrmarg
411   \parfillskip   -\rightskip
412   \parindent   \cftparaindent\relax\@afterindenttrue
413   \interlinepenalty\@M
414   \leavevmode
415   \@tempdima   \cftparanumwidth\relax
416   \let\@cftbsnum   \cftparapresnum
417   \let\@cftasnum   \cftparaaftersnum
418   \let\@cftasnumb   \cftparaaftersnumb
419   \advance\leftskip   \@tempdima   \null\nobreak\hskip   -\leftskip
420   {\cftparafont   #1}\nobreak
421   \cftparafillnum{#2}}%
422   \fi}
\cftbeforeparaskip
\cftparaindent
\cftparanumwidth
\cftparafont
\cftparapresnum
\cftparaaftersnum
\cftparaaftersnumb
\cftparaleader
\cftparadotsep
\cftparapagefont
\cftparaafterpnum
\cftparafillnum
These   are   the   user   commands   to  control   the   typesetting  of   Paragraph  entries.
They  are  initialised  to  give  the  standard  appearance.
423  \newlength{\cftbeforeparaskip}
424   \setlength{\cftbeforeparaskip}{\z@   \@plus.2\p@}
425  \newlength{\cftparaindent}
426  \newlength{\cftparanumwidth}
427  \if@cfthaschapter
428   \setlength{\cftparaindent}{10em}
429   \setlength{\cftparanumwidth}{5em}
430  \else
431   \setlength{\cftparaindent}{7.0em}
432   \setlength{\cftparanumwidth}{4.1em}
31
433  \fi
434  \newcommand{\cftparafont}{\normalfont}
435  \newcommand{\cftparapresnum}{}
436  \newcommand{\cftparaaftersnum}{}
437  \newcommand{\cftparaaftersnumb}{}
438  \newcommand{\cftparaleader}{\normalfont\cftdotfill{\cftparadotsep}}
439  \newcommand{\cftparadotsep}{\cftdotsep}
440  \newcommand{\cftparapagefont}{\normalfont}
441  \newcommand{\cftparaafterpnum}{}
442  \newcommand{\cftparafillnum}[1]{%
443   {\cftparaleader}\nobreak
444   \makebox[\@pnumwidth][\cftpnumalign]{\cftparapagefont   #1}\cftparaafterpnum\par
445  }
\l@subparagraph   \l@subparagraph{title}{page}  typesets   the  ToC  entry  for   a  subparagraph
heading.   It   is   a   parameterised   copy   of   the   default   \l@subparagraph   (see
classes.dtx  for  the  original  denition).
446  \renewcommand*{\l@subparagraph}[2]{%
447   \ifnum   \c@tocdepth   >4\relax
448   \vskip   \cftbeforesubparaskip
449   {\leftskip   \cftsubparaindent\relax
450   \rightskip   \@tocrmarg
451   \parfillskip   -\rightskip
452   \parindent   \cftsubparaindent\relax\@afterindenttrue
453   \interlinepenalty\@M
454   \leavevmode
455   \@tempdima   \cftsubparanumwidth\relax
456   \let\@cftbsnum   \cftsubparapresnum
457   \let\@cftasnum   \cftsubparaaftersnum
458   \let\@cftasnumb   \cftsubparaaftersnumb
459   \advance\leftskip   \@tempdima   \null\nobreak\hskip   -\leftskip
460   {\cftsubparafont   #1}\nobreak
461   \cftsubparafillnum{#2}}%
462   \fi}
\cftbeforesubparaskip
\cftsubparaindent
\cftsubparanumwidth
\cftsubparafont
\cftsubparapresnum
\cftsubparaaftersnum
\cftsubparaaftersnumb
\cftsubparaleader
\cftsubparadotsep
\cftsubparapagefont
\cftsubparaafterpnum
\cftsubparafillnum
These are the user commands to control the typesetting of Sub-paragraph entries.
They  are  initialised  to  give  the  standard  appearance.
463  \newlength{\cftbeforesubparaskip}
464   \setlength{\cftbeforesubparaskip}{\z@   \@plus.2\p@}
465  \newlength{\cftsubparaindent}
466  \newlength{\cftsubparanumwidth}
467  \if@cfthaschapter
468   \setlength{\cftsubparaindent}{12em}
469   \setlength{\cftsubparanumwidth}{6em}
470  \else
471   \setlength{\cftsubparaindent}{10em}
472   \setlength{\cftsubparanumwidth}{5em}
473  \fi
474  \newcommand{\cftsubparafont}{\normalfont}
32
475  \newcommand{\cftsubparapresnum}{}
476  \newcommand{\cftsubparaaftersnum}{}
477  \newcommand{\cftsubparaaftersnumb}{}
478  \newcommand{\cftsubparaleader}{\normalfont\cftdotfill{\cftsubparadotsep}}
479  \newcommand{\cftsubparadotsep}{\cftdotsep}
480  \newcommand{\cftsubparapagefont}{\normalfont}
481  \newcommand{\cftsubparaafterpnum}{}
482  \newcommand{\cftsubparafillnum}[1]{%
483   {\cftsubparaleader}\nobreak
484   \makebox[\@pnumwidth][\cftpnumalign]{\cftsubparapagefont   #1}\cftsubparaafterpnum\par
485  }
\@cftdobiblof   If   the  tocbibind  package  has  been  used  and  it  has  redened  \listoffigures  we
need  to  cater  for  that.   The  contents  of  the  denition  are  dened  in  tocbibind.
486  \newcommand{\@cftdobiblof}{%
487   \if@dotoclof
488   \if@bibchapter
489   \phantomsection
490   \addcontentsline{toc}{chapter}{\listfigurename}
491   \else
492   \phantomsection
493   \addcontentsline{toc}{\@tocextra}{\listfigurename}
494   \fi
495   \fi}
496
\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 denition, but we have to cater for all classes in one denition, hence some
of  the  checks.   First,  perform  the  default  checks  for  multicolumns.   (Do  nothing  if
titles  option  is  used).
497  \AtBeginDocument{%
498  \if@cftnctoc\else
499  \renewcommand{\listoffigures}{%
500   \@cfttocstart
Ensure  that  any  previous  paragraph  has  been  nished.   Within  a  group  set  the
local  paragraphing  style.   Typeset  the  title  and  then  do  the  contents  of  the  .lof
le.
501   \par
502   \begingroup
503   \parindent\z@   \parskip\cftparskip
504   \@cftmakeloftitle
505   \if@cfttocbibind
506   \@cftdobiblof
507   \fi
508   \@starttoc{lof}%
509   \endgroup
Finally,  restore  any  multicolumn  typesetting.
33
510   \@cfttocfinish}%
511  \fi
512  }
513
\@cftmakeloftitle   This  command  typesets  the  title  for  the  LoF.
514  \newcommand{\@cftmakeloftitle}{%
515   \addpenalty\@secpenalty
516   \if@cfthaschapter
517   \vspace*{\cftbeforeloftitleskip}
518   \else
519   \vspace{\cftbeforeloftitleskip}
520   \fi
521   \@cftpagestyle
522   {\interlinepenalty\@M
523   {\cftloftitlefont\listfigurename}{\cftafterloftitle}
524   \cftmarklof
525   \par\nobreak
526   \vskip   \cftafterloftitleskip
527   \@afterheading}}
528
\cftbeforeloftitleskip
\cftafterloftitleskip
These  two  lengths  control  the  vertical  spacing  before  and  after  the  LoF  title.
529  \newlength{\cftbeforeloftitleskip}
530  \newlength{\cftafterloftitleskip}
Their   values   depend  on  whether   the   document   has   chapters   or   not.   In  chap-
tered  documents  the  default  LoF  title  is  typeset  as  a  \chapter*,   otherwise  as  a
\section*.
531  \if@cfthaschapter
532   \setlength{\cftbeforeloftitleskip}{50pt}
533   \setlength{\cftafterloftitleskip}{40pt}
534  \else
535   \setlength{\cftbeforeloftitleskip}{3.5ex   \@plus   1ex   \@minus   .2ex}
536   \setlength{\cftafterloftitleskip}{2.3ex   \@plus.2ex}
537  \fi
\cftloftitlefont
\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  redened  to  do  other  things  (e.g.,   adding  an
\hfill  to  \cftloftitlefont  will  make  the  title  ushright).
538  \if@cfthaschapter
539   \newcommand{\cftloftitlefont}{\normalfont\Huge\bfseries}
540   \if@cftkoma\renewcommand{\cftloftitlefont}{\size@chapter\sectfont}\fi
541  \else
542   \newcommand{\cftloftitlefont}{\normalfont\Large\bfseries}
543   \if@cftkoma\renewcommand{\cftloftitlefont}{\size@section\sectfont}\fi
544  \fi
545  \newcommand{\cftafterloftitle}{}
546
34
\l@figure   \l@figure{title}{page} typesets the LoF entry for a  figure caption heading.
It   is   a  parameterised  copy  of   the  default   \l@figure  (see   classes.dtx  for   the
original  denition).
547  \renewcommand*{\l@figure}[2]{%
548   \ifnum   \c@lofdepth   >\z@
549   \vskip   \cftbeforefigskip
550   {\leftskip   \cftfigindent\relax
551   \rightskip   \@tocrmarg
552   \parfillskip   -\rightskip
553   \parindent   \cftfigindent\relax\@afterindenttrue
554   \interlinepenalty\@M
555   \leavevmode
556   \@tempdima   \cftfignumwidth\relax
557   \let\@cftbsnum   \cftfigpresnum
558   \let\@cftasnum   \cftfigaftersnum
559   \let\@cftasnumb   \cftfigaftersnumb
560   \advance\leftskip   \@tempdima   \null\nobreak\hskip   -\leftskip
561   {\cftfigfont   #1}\nobreak
562   \cftfigfillnum{#2}}%
563   \fi
564   }
\cftbeforefigskip
\cftfigindent
\cftfignumwidth
\cftfigfont
\cftfigpresnum
\cftfigaftersnum
\cftfigaftersnumb
\cftfigleader
\cftfigdotsep
\cftfigpagefont
\cftfigafterpnum
\cftfigfillnum
These are the user commands to control the typesetting of Figure caption entries.
They  are  initialised  to  give  the  standard  appearance.
565  \newlength{\cftbeforefigskip}
566   \setlength{\cftbeforefigskip}{\z@   \@plus.2\p@}
567  \newlength{\cftfigindent}
568   \setlength{\cftfigindent}{1.5em}
569  \newlength{\cftfignumwidth}
570   \setlength{\cftfignumwidth}{2.3em}
571  \newcommand{\cftfigfont}{\normalfont}
572  \newcommand{\cftfigpresnum}{}
573  \newcommand{\cftfigaftersnum}{}
574  \newcommand{\cftfigaftersnumb}{}
575  \newcommand{\cftfigleader}{\normalfont\cftdotfill{\cftfigdotsep}}
576  \newcommand{\cftfigdotsep}{\cftdotsep}
577  \newcommand{\cftfigpagefont}{\normalfont}
578  \newcommand{\cftfigafterpnum}{}
579  \newcommand{\cftfigfillnum}[1]{%
580   {\cftfigleader}\nobreak
581   \makebox[\@pnumwidth][\cftpnumalign]{\cftfigpagefont   #1}\cftfigafterpnum\par
582  }
lofdepth
lotdepth
The counters lofdepth and lotdepth are dened by the subgure package.   Dene
them  here  if  that  package  is  not  used.
583  \if@cftsubfigopt\else
584   \newcounter{lofdepth}\setcounter{lofdepth}{1}
585   \newcounter{lotdepth}\setcounter{lotdepth}{1}
586  \fi
35
587
\@cftdobiblot   If   the  tocbibind  package  has  been  used  and  it  has  redened  \listoftables  we
need  to  cater  for  that.   The  contents  of  the  denition  are  dened  in  tocbibind.
588  \newcommand{\@cftdobiblot}{%
589   \if@dotoclot
590   \if@bibchapter
591   \phantomsection
592   \addcontentsline{toc}{chapter}{\listtablename}
593   \else
594   \phantomsection
595   \addcontentsline{toc}{\@tocextra}{\listtablename}
596   \fi
597   \fi}
598
\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 denition, but we have to cater for all classes in one denition, hence some
of  the  checks.   First,  perform  the  default  checks  for  multicolumns.   (Do  nothing  if
the  titles  option  has  been  used).
599  \AtBeginDocument{%
600  \if@cftnctoc\else
601  \renewcommand{\listoftables}{%
602   \@cfttocstart
Ensure  that  any  previous  paragraph  has  been  nished.   Within  a  group  set  the
local  paragraphing  style.   Typeset  the  title  and  then  do  the  contents  of  the  .lot
le.
603   \par
604   \begingroup
605   \parindent\z@   \parskip\cftparskip
606   \@cftmakelottitle
607   \if@cfttocbibind
608   \@cftdobiblot
609   \fi
610   \@starttoc{lot}%
611   \endgroup
Finally,  restore  any  multicolumn  typesetting.
612   \@cfttocfinish}%
613  \fi
614  }
615
\@cftmakelottitle   This  command  typesets  the  title  for  the  LoT.
616  \newcommand{\@cftmakelottitle}{%
617   \addpenalty\@secpenalty
618   \if@cfthaschapter
619   \vspace*{\cftbeforelottitleskip}
36
620   \else
621   \vspace{\cftbeforelottitleskip}
622   \fi
623   \@cftpagestyle
624   {\interlinepenalty\@M
625   {\cftlottitlefont\listtablename}{\cftafterlottitle}
626   \cftmarklot
627   \par\nobreak
628   \vskip   \cftafterlottitleskip
629   \@afterheading}}
630
\cftbeforelottitleskip
\cftafterlottitleskip
These  two  lengths  control  the  vertical  spacing  before  and  after  the  LoT  title.
631  \newlength{\cftbeforelottitleskip}
632  \newlength{\cftafterlottitleskip}
Their   values   depend  on  whether   the   document   has   chapters   or   not.   In  chap-
tered  documents  the  default  LoT  title  is  typeset  as  a  \chapter*,   otherwise  as  a
\section*.
633  \if@cfthaschapter
634   \setlength{\cftbeforelottitleskip}{50pt}
635   \setlength{\cftafterlottitleskip}{40pt}
636  \else
637   \setlength{\cftbeforelottitleskip}{3.5ex   \@plus   1ex   \@minus   .2ex}
638   \setlength{\cftafterlottitleskip}{2.3ex   \@plus.2ex}
639  \fi
\cftlottitlefont
\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  redened  to  do  other  things  (e.g.,   adding  an
\hfill  to  \cftlottitlefont  will  make  the  title  ushright).
640  \if@cfthaschapter
641   \newcommand{\cftlottitlefont}{\normalfont\Huge\bfseries}
642   \if@cftkoma\renewcommand{\cftlottitlefont}{\size@chapter\sectfont}\fi
643  \else
644   \newcommand{\cftlottitlefont}{\normalfont\Large\bfseries}
645   \if@cftkoma\renewcommand{\cftlottitlefont}{\size@section\sectfont}\fi
646  \fi
647  \newcommand{\cftafterlottitle}{}
648
\l@table   \l@table{title}{page} typesets the LoT entry for a table caption heading.   It
is a parameterised copy of the default \l@table (see classes.dtx for the original
denition).
649  \renewcommand*{\l@table}[2]{%
650   \ifnum\c@lotdepth   >\z@
651   \vskip   \cftbeforetabskip
652   {\leftskip   \cfttabindent\relax
653   \rightskip   \@tocrmarg
37
654   \parfillskip   -\rightskip
655   \parindent   \cfttabindent\relax\@afterindenttrue
656   \interlinepenalty\@M
657   \leavevmode
658   \@tempdima   \cfttabnumwidth\relax
659   \let\@cftbsnum   \cfttabpresnum
660   \let\@cftasnum   \cfttabaftersnum
661   \let\@cftasnumb   \cfttabaftersnumb
662   \advance\leftskip   \@tempdima   \null\nobreak\hskip   -\leftskip
663   {\cfttabfont   #1}\nobreak
664   \cfttabfillnum{#2}}%
665   \fi
666   }
\cftbeforetabskip
\cfttabindent
\cfttabnumwidth
\cfttabfont
\cfttabpresnum
\cfttabaftersnum
\cfttabaftersnumb
\cfttableader
\cfttabdotsep
\cfttabpagefont
\cfttabafterpnum
\cfttabfillnum
These  are  the  user  commands  to  control  the  typesetting  of  Table  caption  entries.
They  are  initialised  to  give  the  standard  appearance.
667  \newlength{\cftbeforetabskip}
668   \setlength{\cftbeforetabskip}{\z@   \@plus.2\p@}
669  \newlength{\cfttabindent}
670   \setlength{\cfttabindent}{1.5em}
671  \newlength{\cfttabnumwidth}
672   \setlength{\cfttabnumwidth}{2.3em}
673  \newcommand{\cfttabfont}{\normalfont}
674  \newcommand{\cfttabpresnum}{}
675  \newcommand{\cfttabaftersnum}{}
676  \newcommand{\cfttabaftersnumb}{}
677  \newcommand{\cfttableader}{\normalfont\cftdotfill{\cfttabdotsep}}
678  \newcommand{\cfttabdotsep}{\cftdotsep}
679  \newcommand{\cfttabpagefont}{\normalfont}
680  \newcommand{\cfttabafterpnum}{}
681  \newcommand{\cfttabfillnum}[1]{%
682   {\cfttableader}\nobreak
683   \makebox[\@pnumwidth][\cftpnumalign]{\cfttabpagefont   #1}\cfttabafterpnum\par
684  }
3.1   Support  for  the  subgure  package
The code for supporting the subgure package is, in all essentials, the same as that
for  the  gure  and  table  captions;  only  the  names  are  changed.   However,  the  code
need  only  be  executed  if  the  subgure  package  is  actually  loaded.
\@cftl@subfig   This  command  redenes  the  \l@subfigure  command.
685  \newcommand{\@cftl@subfig}{%
\l@subfigure   \l@subfigure{title}{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.
686  \renewcommand*{\l@subfigure}[2]{%
687   \ifnum   \c@lofdepth   >   \toclevel@subfigure
38
688   \vskip   \cftbeforesubfigskip
689   {\leftskip   \cftsubfigindent\relax
690   \rightskip   \@tocrmarg
691   \parfillskip   -\rightskip
692   \parindent   \cftsubfigindent\relax\@afterindenttrue
693   \interlinepenalty\@M
694   \leavevmode
695   \@tempdima   \cftsubfignumwidth\relax
696   \let\@cftbsnum   \cftsubfigpresnum
697   \let\@cftasnum   \cftsubfigaftersnum
698   \let\@cftasnumb   \cftsubfigaftersnumb
699   \advance\leftskip   \@tempdima   \null\nobreak\hskip   -\leftskip
700   {\cftsubfigfont   ##1}\nobreak
701   \cftsubfigfillnum{##2}}%
702   \fi
703   }%
704  }
705
\@cftsetsubfig   This  command  initialises  the  setup  for  subgure  captions  in  the  LoF.
706  \newcommand{\@cftsetsubfig}{%
\cftbeforesubfigskip
\cftsubfigindent
\cftsubfignumwidth
\cftsubfigfont
\cftsubfigpresnum
\cftsubfigaftersnum
\cftsubfigaftersnumb
\cftsubfigleader
\cftsubfigdotsep
\cftsubfigpagefont
\cftsubfigafterpnum
\toclevel@subfig
\cftsubfigfillnum
707  \newlength{\cftbeforesubfigskip}
708   \setlength{\cftbeforesubfigskip}{\z@   \@plus.2\p@}
709  \newlength{\cftsubfigindent}
710   \setlength{\cftsubfigindent}{3.8em}
711  \newlength{\cftsubfignumwidth}
712   \setlength{\cftsubfignumwidth}{2.5em}
713  \newcommand{\cftsubfigfont}{\normalfont}
714  \newcommand{\cftsubfigpresnum}{}
715  \newcommand{\cftsubfigaftersnum}{}
716  \newcommand{\cftsubfigaftersnumb}{}
717  \newcommand{\cftsubfigleader}{\normalfont\cftdotfill{\cftsubtabdotsep}}
718  \newcommand{\cftsubfigdotsep}{\cftdotsep}
719  \newcommand{\cftsubfigpagefont}{\normalfont}
720  \newcommand{\cftsubfigafterpnum}{}
721  \providecommand{\toclevel@subfigure}{1}
722  \newcommand{\cftsubfigfillnum}[1]{%
723   {\cftsubfigleader}\nobreak
724   \makebox[\@pnumwidth][\cftpnumalign]{\cftsubfigpagefont   ##1}\cftsubfigafterpnum\par
725  }
This  is  the  end  of  \@cftsetsubfig.
726  }
727
\@cftl@subtab   This  code  redenes  the  code  for  \l@subtable.
728  \newcommand{\@cftl@subtab}{%
39
\l@subtable   \l@subtable{title}{page}   typesets   the   LoT  entry   for   a   subtable   caption
heading.   It  is  essentially  the  same  as  the  parameterised  code  for   \l@table  ex-
cept  account  has  to  be  taken  of  lotdepth.
729  \renewcommand*{\l@subtable}[2]{%
730   \ifnum   \c@lotdepth   >   \toclevel@subtable
731   \vskip   \cftbeforesubtabskip
732   {\leftskip   \cftsubtabindent\relax
733   \rightskip   \@tocrmarg
734   \parfillskip   -\rightskip
735   \parindent   \cftsubtabindent\relax\@afterindenttrue
736   \interlinepenalty\@M
737   \leavevmode
738   \@tempdima   \cftsubtabnumwidth\relax
739   \let\@cftbsnum   \cftsubtabpresnum
740   \let\@cftasnum   \cftsubtabaftersnum
741   \let\@cftasnumb   \cftsubtabaftersnumb
742   \advance\leftskip   \@tempdima   \null\nobreak\hskip   -\leftskip
743   {\cftsubtabfont   ##1}\nobreak
744   \cftsubtabfillnum{##2}}%
745   \fi
746   }%
747  }
\@cftsetsubtab   This  command  sets  up  the  defaults  for  subtable  entries  in  the  LoT.
748  \newcommand{\@cftsetsubtab}{%
\cftbeforesubtabskip
\cftsubtabindent
\cftsubtabnumwidth
\cftsubtabfont
\cftsubtabpresnum
\cftsubtabaftersnum
\cftsubtabaftersnumb
\cftsubtableader
\cftsubtabdotsep
\cftsubtabpagefont
\cftsubtabafterpnum
\toclevel@subtable
\cftsubtabfillnum
These  are  the  user  commands  to  control   the  typesetting  of  Subtable  caption  en-
tries.   They  are  initialised  to  give  the  standard  appearance.
749  \newlength{\cftbeforesubtabskip}
750   \setlength{\cftbeforesubtabskip}{\z@   \@plus.2\p@}
751  \newlength{\cftsubtabindent}
752   \setlength{\cftsubtabindent}{3.8em}
753  \newlength{\cftsubtabnumwidth}
754   \setlength{\cftsubtabnumwidth}{2.5em}
755  \newcommand{\cftsubtabfont}{\normalfont}
756  \newcommand{\cftsubtabpresnum}{}
757  \newcommand{\cftsubtabaftersnum}{}
758  \newcommand{\cftsubtabaftersnumb}{}
759  \newcommand{\cftsubtableader}{\normalfont\cftdotfill{\cftsubtabdotsep}}
760  \newcommand{\cftsubtabdotsep}{\cftdotsep}
761  \newcommand{\cftsubtabpagefont}{\normalfont}
762  \newcommand{\cftsubtabafterpnum}{}
763  \providecommand{\toclevel@subtable}{1}
764  \newcommand{\cftsubtabfillnum}[1]{%
765   {\cftsubtableader}\nobreak
766   \makebox[\@pnumwidth][\cftpnumalign]{\cftsubtabpagefont   ##1}\cftsubtabafterpnum\par
767  }
This  is  the  end  of  \@cftsetsubtab.
40
768  }
769
Call   the  subgure  package  setup  code  only  if  the  subgure  option  is  specied.
The  \l@...  redenitions  have  to  come  after  the  subgure  package  is  loaded.
770
771  \if@cftsubfigopt
772   \@cftsetsubfig\@cftsetsubtab
773   \AtBeginDocument{\@cftl@subfig\@cftl@subtab}
774  \fi
775  %%   \AtBeginDocument{\if@cftsubfigopt
776  %%   \@cftsetsubfig\@cftsetsubtab
777  %%   \@cftl@subfig\@cftl@subtab
778  %%   \fi}
779
3.2   New  list  of. . .
\newlistentry   \newlistentry[within]{counter}{ext}{level-1}   creates   a   set   of   com-
mands  for  a  new  kind  of  entry  into  a  List  of.
780  \newcommand{\newlistentry}[4][\@empty]{%
\c@X
\theX
Check if within and counter have been dened.   It is an error if within has not
been  dened,  and  an  error  if counter  has  been  dened.   Set  the  default  counter
values.
781   \@ifundefined{c@#2}{%   check   &   set   the   counter
782   \ifx   \@empty#1\relax
783   \newcounter{#2}
784   \else
785   \@ifundefined{c@#1}{\PackageWarning{tocloft}%
786   {#1   has   no   counter   for   use   as   a   within}
787   \newcounter{#2}}%
788   {\newcounter{#2}[#1]%
789   \expandafter\edef\csname   the#2\endcsname{%
790   \expandafter\noexpand\csname   the#1\endcsname.\noexpand\arabic{#2}}}
791   \fi
792   \setcounter{#2}{0}
793   }
794   {\PackageError{tocloft}{#2   has   been   previously   defined}{\@eha}}
795
That nishes o the error checking.   No matter what the result, the rest of the
new  commands  are  dened.
\l@X   \l@X{title}{page}  typesets  the  entry.
796   \@namedef{l@#2}##1##2{%
Only  typeset  if  the  \Zdepth  is  greater  than level-1.
797   \ifnum   \@nameuse{c@#3depth}   >   #4\relax
41
798   \vskip   \@nameuse{cftbefore#2skip}
799   {\leftskip   \@nameuse{cft#2indent}\relax
800   \rightskip   \@tocrmarg
801   \parfillskip   -\rightskip
802   \parindent   \@nameuse{cft#2indent}\relax\@afterindenttrue
803   \interlinepenalty\@M
804   \leavevmode
805   \@tempdima   \@nameuse{cft#2numwidth}\relax
806   \expandafter\let\expandafter\@cftbsnum\csname   cft#2presnum\endcsname
807   \expandafter\let\expandafter\@cftasnum\csname   cft#2aftersnum\endcsname
808   \expandafter\let\expandafter\@cftasnumb\csname   cft#2aftersnumb\endcsname
809   \advance\leftskip\@tempdima   \null\nobreak\hskip   -\leftskip
810   {\@nameuse{cft#2font}##1}\nobreak
811   \@nameuse{cft#2fillnum}{##2}}%
812   \fi
813   }   %   end   of   \l@#2
814
Now dene all the layout commands used by  \l@X. The default values of these
correspond  to  those  for  section  entries  in  non-chaptered  documents.
\cftbeforeXskip
815   \expandafter\newlength\csname   cftbefore#2skip\endcsname
816   \setlength{\@nameuse{cftbefore#2skip}}{\z@   \@plus   .2\p@}
\cftXindent
\cftXnumwidth
  817   \expandafter\newlength\csname   cft#2indent\endcsname
818   \expandafter\newlength\csname   cft#2numwidth\endcsname
Set the default values for the indent and numwidth depending on the entrys level.
A  level  of  1  corresponds  to  a  gure  entry.
819   \ifcase   #4\relax   %   0
820   \setlength{\@nameuse{cft#2indent}}{0em}
821   \setlength{\@nameuse{cft#2numwidth}}{1.5em}
822   \or   %   1
823   \setlength{\@nameuse{cft#2indent}}{1.5em}
824   \setlength{\@nameuse{cft#2numwidth}}{2.3em}
825   \or   %   2
826   \setlength{\@nameuse{cft#2indent}}{3.8em}
827   \setlength{\@nameuse{cft#2numwidth}}{3.2em}
828   \or   %   3
829   \setlength{\@nameuse{cft#2indent}}{7.0em}
830   \setlength{\@nameuse{cft#2numwidth}}{4.1em}
831   \else   %   anything   else
832   \setlength{\@nameuse{cft#2indent}}{10.0em}
833   \setlength{\@nameuse{cft#2numwidth}}{5.0em}
834   \fi
\cftXfont
\cftXpresnum
\cftXaftersnum
\cftXaftersnumb
\cftXdotsep
\cftXleader
\cftXpagefont
\cftXafterpnum
And  the  remaining  commands.
835   \@namedef{cft#2font}{\normalfont}
42
836   \@namedef{cft#2presnum}{}
837   \@namedef{cft#2aftersnum}{}
838   \@namedef{cft#2aftersnumb}{}
839   \@namedef{cft#2dotsep}{\cftdotsep}
840   \@namedef{cft#2leader}{\normalfont\cftdotfill{\@nameuse{cft#2dotsep}}}
841   \@namedef{cft#2pagefont}{\normalfont}
842   \@namedef{cft#2afterpnum}{}
\toclevel@X   The hyperref package needs a command \toclevel@X, holding the level-1 value.
843   \@namedef{toclevel@#2}{#4}
\cftXfillnum   Typeset  the  leader  and  page  number.
844   \@namedef{cft#2fillnum}##1{%
845   {\@nameuse{cft#2leader}}\nobreak
846   \makebox[\@pnumwidth][\cftpnumalign]{\@nameuse{cft#2pagefont}##1}\@nameuse{cft#2afterpnum}\par
847   }
This  ends  the  denition  of  \newlistentry.
848  }
\newlistof   \newlistof[within]{entry}{ext}{listofname}  creates  the  commands  for
a  new  List  of.
849  \newcommand{\newlistof}[4][\@empty]{%
Call  \newlistentry  to  set  up  the  rst  level  entry.
850   \ifx   \@empty#1\relax
851   \newlistentry{#2}{#3}{0}
852   \else
853   \newlistentry[#1]{#2}{#3}{0}
854   \fi
\ext@Z
\Zdepth
The  le  extension  and  listing  depth.
855   \@namedef{ext@#2}{#3}
856   \newcounter{#3depth}
857   \setcounter{#3depth}{1}
\cftmarkZ   The  heading  marks  for  the  listing.
858   \if@cftkoma
859   \@namedef{cftmark#3}{%
860   \@mkboth{#4}{#4}}
861   \else
862   \@namedef{cftmark#3}{%
863   \@mkboth{\MakeUppercase{#4}}{\MakeUppercase{#4}}}
864   \fi
\listofX   Typeset  the  listing  title  and  entries.
865   \if@cftnctoc
43
For the titles option, basically copy the code from the standard \tableofcontents
command.
866   \@namedef{listof#2}{%
867   \@cfttocstart
868   \if@cfthaschapter
869   \chapter*{#4}
870   \else
871   \section*{#4}
872   \fi
873   \@nameuse{cftmark#3}
874   \@starttoc{#3}%
875   \@cfttocfinish}
876   \else
Otherwise  use  the  fully  parameterised  denition.
877   \@namedef{listof#2}{%
878   \@cfttocstart
879   \par
880   \begingroup
881   \parindent\z@   \parskip\cftparskip
882   \@nameuse{@cftmake#3title}
883   \@starttoc{#3}%
884   \endgroup
885   \@cfttocfinish}
886   \fi
887
\@cftmakeZtitle   Typeset  the  title.
888   \@namedef{@cftmake#3title}{%
889   \addpenalty\@secpenalty
890   \if@cfthaschapter
891   \vspace*{\@nameuse{cftbefore#3titleskip}}%
892   \else
893   \vspace{\@nameuse{cftbefore#3titleskip}}%
894   \fi
895   \@cftpagestyle
896   {\interlinepenalty\@M
897   {\@nameuse{cft#3titlefont}#4}{\@nameuse{cftafter#3title}}%
898   \@nameuse{cftmark#3}%
899   \par\nobreak
900   \vskip   \@nameuse{cftafter#3titleskip}%
901   \@afterheading}}
902
\cftbeforeZtitleskip
\cftafterZtitleskip
\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.
903   \expandafter\newlength\csname   cftbefore#3titleskip\endcsname
904   \expandafter\newlength\csname   cftafter#3titleskip\endcsname
905   \if@cfthaschapter
906   \setlength{\@nameuse{cftbefore#3titleskip}}{50pt}
44
907   \setlength{\@nameuse{cftafter#3titleskip}}{40pt}
908   \if@cftkoma
909   \@namedef{cft#3titlefont}{\size@chapter\sectfont}
910   \else
911   \@namedef{cft#3titlefont}{\normalfont\Huge\bfseries}
912   \fi
913   \else
914   \setlength{\@nameuse{cftbefore#3titleskip}}{3.5ex   \@plus   1ex   \@minus   .2ex}
915   \setlength{\@nameuse{cftafter#3titleskip}}{2.3ex   \@plus   .2ex}
916   \if@cftkoma
917   \@namedef{cft#3titlefont}{\size@section\sectfont}
918   \else
919   \@namedef{cft#3titlefont}{\normalfont\Huge\bfseries}
920   \fi
921   \fi
\cftafterZtitle   Something  to  go  after  the  title.
922   \@namedef{cftafter#3title}{}
This  is  the  end  of  the  denition  of  \newlistof.
923  }
\cftsetindents   \cftsetindents{entry}{indent}{numwidth} sets the indent  and numwidth
for  entry entry.   The  macro  has  to  map  between  the  external   entry  name  and
the  internal  shorthand.
924  \newcommand{\cftsetindents}[3]{%
925   \def\@cftemp{#1}
926   \ifx\@cftemp\cftchapname
927   \@cftsetindents{chap}{#2}{#3}
928   \else
929   \ifx\@cftemp\cftsecname   \@cftsetindents{sec}{#2}{#3}
930   \else
931   \ifx\@cftemp\cftsubsecname   \@cftsetindents{subsec}{#2}{#3}
932   \else
933   \ifx\@cftemp\cftsubsubsecname   \@cftsetindents{subsubsec}{#2}{#3}
934   \else
935   \ifx\@cftemp\cftparaname   \@cftsetindents{para}{#2}{#3}
936   \else
937   \ifx\@cftemp\cftsubparaname   \@cftsetindents{subpara}{#2}{#3}
938   \else
939   \ifx\@cftemp\cftfigname   \@cftsetindents{fig}{#2}{#3}
940   \else
941   \ifx\@cftemp\cftsubfigname   \@cftsetindents{subfig}{#2}{#3}
942   \else
943   \ifx\@cftemp\cfttabname   \@cftsetindents{tab}{#2}{#3}
944   \else
945   \ifx\@cftemp\cftsubtabname   \@cftsetindents{subtab}{#2}{#3}
946   \else
947   \@cftsetindents{#1}{#2}{#3}
45
948   \fi
949   \fi
950   \fi
951   \fi
952   \fi
953   \fi
954   \fi
955   \fi
956   \fi
957   \fi
958  }
959
\@cftsetindents   \@cftsetindents{X}{indent}{numwidth} is the internal version of \cftsetindents,
where  in  this  case X  is  the  internal  (shorthand)  name  of  the  entry.
960  \newcommand{\@cftsetindents}[3]{%
961   \setlength{\@nameuse{cft#1indent}}{#2}
962   \setlength{\@nameuse{cft#1numwidth}}{#3}
963  }
964
3.3   Switching  page  numbering
\@cftpnumoff   \@cftpnumoff{shorthand}  is  the  workhorse  for  switching  page  numbering  o.
The shorthand  argument  is  the  shorthand  name  of   the  entry  (e.g.   subsec  for
subsection).   The  macro  redenes  the  \cftXnumfill  command  so  that  there  is
no  leader  and  the  page  number  is  ignored.
965  \newcommand{\@cftpnumoff}[1]{%
966   \@namedef{cft#1fillnum}##1{%
967   \cftparfillskip\@nameuse{cft#1afterpnum}\par}}
968
\cftchapname
\cftsecname
\cftsubsecname
\cftsubsubsecname
\cftparaname
\cftsubparaname
\cftfigname
\cftsubfigname
\cfttabname
\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.
969  \newcommand*{\cftchapname}{chapter}
970  \newcommand*{\cftsecname}{section}
971  \newcommand*{\cftsubsecname}{subsection}
972  \newcommand*{\cftsubsubsecname}{subsubsection}
973  \newcommand*{\cftparaname}{paragraph}
974  \newcommand*{\cftsubparaname}{subparagraph}
975  \newcommand*{\cftfigname}{figure}
976  \newcommand*{\cftsubfigname}{subfigure}
977  \newcommand*{\cfttabname}{table}
978  \newcommand*{\cftsubtabname}{subtable}
979
\cftpagenumbersoff   The user level command for switching o page numbers is \cftpagenumbersoff{entry}
where entry is the longhand name of the entry.   The principal task opf this macro
46
is  to  determine  the  corresponding  shorthand  name  of   the entry  and  then  call
\@cftpnumoff  to  do  the  work.   For  part  and  user-dened  entries  the  long-   and
short-hand  entry  names  are  identical.
980  \DeclareRobustCommand{\cftpagenumbersoff}[1]{%
981   \def\@cftemp{#1}
982   \ifx\@cftemp\cftchapname
983   \@cftpnumoff{chap}
984   \else
985   \ifx\@cftemp\cftsecname   \@cftpnumoff{sec}
986   \else
987   \ifx\@cftemp\cftsubsecname   \@cftpnumoff{subsec}
988   \else
989   \ifx\@cftemp\cftsubsubsecname   \@cftpnumoff{subsubsec}
990   \else
991   \ifx\@cftemp\cftparaname   \@cftpnumoff{para}
992   \else
993   \ifx\@cftemp\cftsubparaname   \@cftpnumoff{subpara}
994   \else
995   \ifx\@cftemp\cftfigname   \@cftpnumoff{fig}
996   \else
997   \ifx\@cftemp\cftsubfigname   \@cftpnumoff{subfig}
998   \else
999   \ifx\@cftemp\cfttabname   \@cftpnumoff{tab}
1000   \else
1001   \ifx\@cftemp\cftsubtabname   \@cftpnumoff{subtab}
1002   \else
1003   \@cftpnumoff{#1}
1004   \fi
1005   \fi
1006   \fi
1007   \fi
1008   \fi
1009   \fi
1010   \fi
1011   \fi
1012   \fi
1013   \fi
1014  }
1015
\cftpagenumberson   \cftpagenumberson{entry}  is  the  user  level   command  for  reversing  the  corre-
sponding  \cftpagenumbersoff.
1016  \DeclareRobustCommand{\cftpagenumberson}[1]{%
1017   \def\@cftemp{#1}
1018   \ifx\@cftemp\cftchapname
1019   \@cftpnumon{chap}
1020   \else
1021   \ifx\@cftemp\cftsecname   \@cftpnumon{sec}
1022   \else
47
1023   \ifx\@cftemp\cftsubsecname   \@cftpnumon{subsec}
1024   \else
1025   \ifx\@cftemp\cftsubsubsecname   \@cftpnumon{subsubsec}
1026   \else
1027   \ifx\@cftemp\cftparaname   \@cftpnumon{para}
1028   \else
1029   \ifx\@cftemp\cftsubparaname   \@cftpnumon{subpara}
1030   \else
1031   \ifx\@cftemp\cftfigname   \@cftpnumon{fig}
1032   \else
1033   \ifx\@cftemp\cftsubfigname   \@cftpnumon{subfig}
1034   \else
1035   \ifx\@cftemp\cfttabname   \@cftpnumon{tab}
1036   \else
1037   \ifx\@cftemp\cftsubtabname   \@cftpnumon{subtab}
1038   \else
1039   \@cftpnumon{#1}
1040   \fi
1041   \fi
1042   \fi
1043   \fi
1044   \fi
1045   \fi
1046   \fi
1047   \fi
1048   \fi
1049   \fi
1050  }
1051
\@cftpnumon   \@cftpnumon{shorthand}  is   the   workhorse   for   switching  page   numbering  o.
The shorthand  argument  is  the  shorthand  name  of   the  entry  (e.g.   subsec  for
subsection).   The  macro  denes  the  \cftXnumfill  command  to  correspond  to
the  default  denition.
1052  \newcommand{\@cftpnumon}[1]{%
1053   \@namedef{cft#1fillnum}##1{%
1054   {\@nameuse{cft#1leader}}\nobreak
1055   \makebox[\@pnumwidth][\cftpnumalign]{\@nameuse{cft#1pagefont}##1}\@nameuse{cft#1afterpnum}\par
1056   }%
1057  }
3.4   Experimental  utilities
The  code  in  this   section  is   experimental   but   in  the  sense  that   the  capabilities
might  be  modied  in  the  future  rather  than  that  the  code  does  not  work.
\cftchapterprecis   This   is   experimental.   \cftchapterprecis{text}  typesets text   at   the  point
where  it  is  called,  and  also  adds text  to  the  .toc  le.   It  is  expects  to  be  called
immediately  after  a  \chapter  command.
48
1058  \newcommand{\cftchapterprecis}[1]{%
1059   \cftchapterprecishere{#1}
1060   \cftchapterprecistoc{#1}}
\cftchapterprecishere   \cftchapterprecishere{text}  typesets text.   It  expects  to  be  called  immedi-
ately  after  a  \chapter  command.   First  add  some  negative  vertical  space  to  move
it  closer  to  the  chapter  heading.
1061  \newcommand{\cftchapterprecishere}[1]{%
1062   \vspace*{-2\baselineskip}
Typeset  its  argument  using  italic  font  in  a  quote  environment.
1063   \begin{quote}\textit{#1}\end{quote}}
\cftchapterprecistoc   \cftchapterprecistoc{text}  adds text  to  the  .toc  le.   The text  will   be
typeset within the same margins as the the title text of a \chapter heading, using
an  italic  font.
1064  \newcommand{\cftchapterprecistoc}[1]{\addtocontents{toc}{%
Start  a  group  to  localize  changes  to  the  paragraphing.   Set  the  left  margin  to  the
chapter  indent  plus  the  chapter  number  width.
1065   {\leftskip   \cftchapindent\relax
1066   \advance\leftskip   \cftchapnumwidth\relax
Set  the  right  hand  margin  to  \@tocrmarg.
1067   \rightskip   \@tocrmarg\relax
Typeset text  using  an  italic  font,  then  ensure  that  the  paragraph  is  nished  (to
use  the  local  skips).   Finally  close  the  group  and  we  are  done.
1068   \textit{#1}\protect\par}}}
1069
\cftlocalchange   \cftmakelocalchange{le}{pnumwidth}{tocrmarg}   makes   an   entry   into
le  to  change  the  \@pnumwidth  and  the  \@tocrmarg  values.
1070  \newcommand{\cftlocalchange}[3]{%
1071   \addtocontents{#1}{\protect\cftsetpnumwidth{#2}   \protect\cftsetrmarg{#3}}}
\cftaddtitleline   \cftaddtitleline{le}{kind}{title}{page} adds a \contentsline entry
to le  with  the  given  information.
1072  \newcommand{\cftaddtitleline}[4]{\addtocontents{#1}{%
1073   \protect\contentsline{#2}{#3}{#4}}}
\cftaddnumtitleline   \cftaddtitleline{le}{kind}{num}{title}{page} adds a \contentsline
entry  to le  with  the  given  information.
1074  \newcommand{\cftaddnumtitleline}[5]{\addtocontents{#1}{%
1075   \protect\contentsline{#2}{\protect\numberline{#3}#4}{#5}}}
And,  if  dear  old  hyperref   has  been  used,  we  have  to  x  up  these  two  macros.
1076  \AtBeginDocument{%
1077   \@ifpackageloaded{hyperref}{%
1078   \renewcommand{\cftaddtitleline}[4]{\addtocontents{#1}{%
49
1079   \protect\contentsline{#2}{#3}{#4}{\@currentHref}}}
1080   \renewcommand{\cftaddnumtitleline}[5]{\addtocontents{#1}{%
1081   \protect\contentsline{#2}{\protect\numberline{#3}#4}{#5}{\@currentHref}}}
1082   }{}
1083  }
1084
The  end  of  this  package.
1085 /usc
References
[Coc95]   Steven Douglas Cochran.  The subgure package.  March 1995.  (Available
from  CTAN  as  le  subfigure.dtx)
[Dru99]   Jean-Pierre  Drucbert.   The  minitoc  package.   August  1999.   (Available
from  CTAN  in  subdirectory  /minitoc)
[GMS94]   Michel Goossens, Frank Mittelbach, and Alexander Samarin. The LaTeX
Companion.   Addison-Wesley  Publishing  Company,  1994.
[Lin97]   Ulf  A.  Lindgren.   FncyChap  V1.11.   April  1997.   (Available  from  CTAN
in  subdirectory  /fncychap)
[Lin95]   Anselm  Lingnau.   An  Improved  Environment   for  Floats.   March  1995.
(Available  from  CTAN  in  subdirectory  /float)
[Wil96a]   Peter   Williams.   Algorithms.   April   1996.   (Available   from  CTAN  in
subdirectory  /algorithm)
[Wil96b]   Peter  R.   Wilson.   LaTeX  for  standards:   The  LaTeX  package  les  user
manual.   NIST  Report  NISTIR,  June  1996.
[Wil00]   Peter  R.   Wilson.   The  tocbibind  package.   March  2000.   (Available  from
CTAN  as  le  tocbibind.dtx)
[Wil01]   Peter  R.   Wilson.   The  ccaption  package.   March  2001.   (Available  from
CTAN  as  le  ccaption.dtx)
Index
Numbers  written  in  italic  refer  to  the  page  where  the  corresponding  entry  is  de-
scribed;   numbers  underlined  refer  to  the  code  line  of   the  denition;   numbers  in
roman  refer  to  the  code  lines  where  the  entry  is  used.
Symbols
\@afterheading   .  .  .  .
.   117,  517,  619,  891
\@afterindenttrue   .
.  .  .  .   175,  231,
277,   322,   362,
50
402,   442,   543,
645,   682,   724,   790
\@cftasnum   .   17,  144,
145,   180,   236,
282,   327,   367,
407,   447,   548,
650,   687,   729,   795
\@cftasnumb   .   17,  144,
145,   181,   237,
283,   328,   368,
408,   448,   549,
651,   688,   730,   796
\@cftbsnum   .   17,  144,
145,   179,   235,
281,   326,   366,
406,   446,   547,
649,   686,   728,   794
\@cftdobiblof   .   476,  496
\@cftdobiblot   .   578,  598
\@cftdobibtoc   .  .  .   74,  97
\@cftdopartfalse   .  .   153
\@cftdoparttrue   156,  160
\@cftemp   916, 917, 920,
922,   924,   926,
928,   930,   932,
934,   936,   972,
973,   976,   978,
980,   982,   984,
986,   988,   990,
992,   1008,   1009,
1012,   1014,
1016,   1018,
1020,   1022,
1024,   1026,   1028
\@cfthaschapterfalse   13
\@cfthaschaptertrue   19
\@cfthaspartfalse   .   150
\@cfthasparttrue   .  .   150
\@cftkomafalse   .  .  .  .  .   7
\@cftkomatrue   .  .  .  .   810
\@cftl@subfig   .  .  .  .  .
.  .  .  .   675,  761,  765
\@cftl@subtab   .  .  .  .  .
.  .  .  .   717,  761,  765
\@cftmakeZtitle   .  .  .   878
\@cftmakeloftitle   .
.  .  .  .  .  .  .  .   494,  504
\@cftmakelottitle   .
.  .  .  .  .  .  .  .   596,  606
\@cftmaketoctitle   .
.  .  .  .  .  .  .  .   95,  104
\@cftnctocfalse   .  .  .   34
\@cftnctoctrue   .  .  .  .   35
\@cftpagestyle   .   42,
111,   511,   613,   885
\@cftpnumoff   956, 974,
976,   978,   980,
982,   984,   986,
988,   990,   992,   994
\@cftpnumon   .  .  .   1010,
1012,   1014,
1016,   1018,
1020,   1022,
1024,   1026,
1028,   1030,   1043
\@cftquit   .  .  .  .   4,  17,  21
\@cftsetindents   .  .  .
.  .  .  .   918,  920,
922,   924,   926,
928,   930,   932,
934,   936,   938,   951
\@cftsetsubfig   .  .  .  .
.  .  .  .   696,  760,  764
\@cftsetsubtab   .  .  .  .
.  .  .  .   737,  760,  764
\@cftsubfigoptfalse   37
\@cftsubfigopttrue   .   38
\@cfttocbibindfalse   24
\@cfttocbibindtrue   .   24
\@cfttocfinish   .  .  .  .
.  .  .  .  .   60,  101,
500,   602,   865,   875
\@cfttocstart   60,  91,
490,   592,   857,   868
\@currentHref   1069,  1071
\@dotsep   .  .  .  .  .  .  .  .  .  .   2
\@dottedtocline   .  .  .  .   4
\@eha   .  .  .  .  .  .  .  .  .  .  .  .   782
\@highpenalty   .   166,  226
\@ifclassloaded   .  .   810
\@ifpackagelater   .  .   26
\@ifpackageloaded   .
.  .  .  .  .  .  .  .   24,  1067
\@ifundefined   .  .  .  .  .
12, 14, 150, 769, 773
\@namedef   .  .  .  .  .  .  .  .
.   784,  823832,
844,   849,   852,
856,   867,   878,
899,   901,   907,
909,   912,   957,   1044
\@nameuse   .   785787,
790,   793,   798,
799,   804,   808,
809,   811,   812,
814,   815,   817,
818,   820,   821,
828,   833,   834,
863,   872,   881,
883,   887,   888,
890,   896,   897,
904,   905,   952,
953,  958,  1045,  1046
\@nobreakfalse   188,  192
\@nobreaktrue   .   187,  191
\@pnumwidth   .  .   2,  135,
215,   260,   314,
354,   394,   434,
474,   571,   673,
714,   755,   834,   1046
\@restonecolfalse   .   65
\@restonecoltrue   .  .   63
\@secpenalty   105, 168,
271,   505,   607,   879
\@starttoc   .  .  .  .   99,
498,   600,   864,   873
\@tocextra   81,  483,  585
\@tocrmarg   .  .   2,  136,
173,   229,   275,
320,   360,   400,
440,   541,   643,
680,   722,   788,   1057
A
\addcontentsline   .  .
.  .  .  .   2,  78,  81,
480,   483,   582,   585
\addtocontents   .  .  .  .
.  .  .  .  .   4,  1054,
1061,   1062,
1064,   1068,   1070
\AtBeginDocument   .  .
.  .  .   23,  88,  487,
589,   761,   763,   1066
B
\baselineskip   .  .  .  .   1052
C
\c@lofdepth   .  .  .   538,  677
51
\c@lotdepth   .  .  .   640,  719
\c@tocdepth   .  .  .   154,
158,   225,   267,
317,   357,   397,   437
\c@X   .  .  .  .  .  .  .  .  .  .  .  .  .   769
\cftaddnumtitleline
.  .  .   16,  1064,  1070
\cftaddtitleline   .  .
.  .  .   16,  1062,  1068
\cftafterloftitle   .
.  .  .  .  .  .  .  .   513,  528
\cftafterloftitleskip
.  .  .  .  .  .  .  .   516,  519
\cftafterlottitle   .
.  .  .  .  .  .  .  .   615,  630
\cftafterlottitleskip
.  .  .  .  .  .  .  .   618,  621
\cftaftertoctitle   .
.  .  .  .  .  .  .  .   113,  127
\cftaftertoctitleskip
.  .  .  .  .  .  .  .   116,  118
\cftafterZtitle   .   7,  912
\cftafterZtitleskip
.  .  .  .  .  .  .  .  .   7,  893
\cftbeforechapskip   .
.  .  .  .  .  .  .  .   227,  243
\cftbeforefigskip   .
.  .  .  .  .  .  .  .   539,  555
\cftbeforeloftitleskip
.  .  .  .   507,  509,  519
\cftbeforelottitleskip
.  .  .  .   609,  611,  621
\cftbeforeparaskip   .
.  .  .  .  .  .  .  .   398,  413
\cftbeforepartskip   .
.  .  .  .  .  .  .  .   170,  198
\cftbeforesecskip   .
.  .  .  .   269,  272,  288
\cftbeforesubfigskip
.  .  .  .  .  .  .  .   678,  697
\cftbeforesubparaskip
.  .  .  .  .  .  .  .   438,  453
\cftbeforesubsecskip
.  .  .  .  .  .  .  .   318,  333
\cftbeforesubsubsecskip
.  .  .  .  .  .  .  .   358,  373
\cftbeforesubtabskip
.  .  .  .  .  .  .  .   720,  738
\cftbeforetabskip   .
.  .  .  .  .  .  .  .   641,  657
\cftbeforetoctitleskip
.  .  .  .   107,  109,  118
\cftbeforeXskip   .   9,  803
\cftbeforeZtitleskip
.  .  .  .  .  .  .  .  .   7,  893
\cftchapafterpnum   .   243
\cftchapaftersnum   .
.  .  .  .  .  .  .  .   236,  243
\cftchapaftersnumb   .
.  .  .  .  .  .  .  .   237,  243
\cftchapdotsep   .  .  .  .   243
\cftchapfillnum   240,  243
\cftchapfont   .  .   239,  243
\cftchapindent   .  .  .  .
228,  231,  243,  1055
\cftchapleader   .  .  .  .   243
\cftchapname   .  .  .  .  .  .
917,  960,  973,  1009
\cftchapnumwidth   .  .
.  .  .   234,  243,  1056
\cftchappagefont   .  .   243
\cftchappresnum   235,  243
\cftchapterprecis   .
.  .  .  .  .  .  .  .   15,  1048
\cftchapterprecishere
.  .  .   16,  1049,  1051
\cftchapterprecistoc
.  .  .   16,  1050,  1054
\cftdot   .  .  .  .  .  .  .  .   8,  137
\cftdotfill   .  .  .   137,
207,   254,   299,
307,   348,   388,
428,   468,   565,
667,   707,   748,   828
\cftdotsep   .  .   8,  140,
300,   349,   389,
429,   469,   566,
668,   708,   749,   827
\cftfigafterpnum   .  .   555
\cftfigaftersnum   .  .
.  .  .  .  .  .  .  .   548,  555
\cftfigaftersnumb   .
.  .  .  .  .  .  .  .   549,  555
\cftfigdotsep   .  .  .  .  .   555
\cftfigfillnum   552,  555
\cftfigfont   .  .  .   551,  555
\cftfigindent   .  .  .  .  .
.  .  .  .   540,  543,  555
\cftfigleader   .  .  .  .  .   555
\cftfigname   .  .  .  .  .  .  .
930,  960,  986,  1022
\cftfignumwidth   546,  555
\cftfigpagefont   .  .  .   555
\cftfigpresnum   547,  555
\cftlocalchange   16,  1060
\cftloftitlefont   .  .
.  .  .  .  .  .  .  .   513,  528
\cftlottitlefont   .  .
.  .  .  .  .  .  .  .   615,  630
\cftmarklof   .  .  .  .   46,  514
\cftmarklot   .  .  .  .   46,  616
\cftmarktoc   .  .  .  .   46,  114
\cftmarkZ   .  .  .  .  .  .   7,  848
\cftnodots   .  .  .  .  .   8,
140,   208,   255,   308
\cftpagenumbersoff   .
.  .  .  .  .  .  .  .   12,  971
\cftpagenumberson   .
.  .  .  .  .  .  .  .   12,  1007
\cftparaafterpnum   .   413
\cftparaaftersnum   .
.  .  .  .  .  .  .  .   407,  413
\cftparaaftersnumb   .
.  .  .  .  .  .  .  .   408,  413
\cftparadotsep   .  .  .  .   413
\cftparafillnum   411,  413
\cftparafont   .  .   410,  413
\cftparaindent   .  .  .  .
.  .  .  .   399,  402,  413
\cftparaleader   .  .  .  .   413
\cftparaname   .  .  .  .  .  .
926,  960,  982,  1018
\cftparanumwidth   .  .
.  .  .  .  .  .  .  .   405,  413
\cftparapagefont   .  .   413
\cftparapresnum   406,  413
\cftparfillskip   142,  958
\cftparskip   .  .  .  .  .   8,
85,  94,  493,  595, 871
\cftpartafterpnum   .   198
\cftpartaftersnum   .
.  .  .  .  .  .  .  .   180,  198
\cftpartaftersnumb   .
.  .  .  .  .  .  .  .   181,  198
\cftpartdotsep   .  .  .  .   198
\cftpartfillnum   184,  198
\cftpartfont   .  .   183,  198
\cftpartindent   .  .  .  .
.  .  .  .   172,  175,  198
52
\cftpartleader   .  .  .  .   198
\cftpartnumwidth   .  .
.  .  .  .  .  .  .  .   178,  198
\cftpartpagefont   .  .   198
\cftpartpresnum   .  .  .
.  .  .  .   179,  183,  198
\cftsecafterpnum   .  .   288
\cftsecaftersnum   .  .
.  .  .  .  .  .  .  .   282,  288
\cftsecaftersnumb   .
.  .  .  .  .  .  .  .   283,  288
\cftsecdotsep   .  .  .  .  .   288
\cftsecfillnum   286,  288
\cftsecfont   .  .  .   285,  288
\cftsecindent   .  .  .  .  .
.  .  .  .   274,  277,  288
\cftsecleader   .  .  .  .  .   288
\cftsecname   .  .  .  .  .  .  .
920,  960,  976,  1012
\cftsecnumwidth   280,  288
\cftsecpagefont   .  .  .   288
\cftsecpresnum   281,  288
\cftsetindents   .   10,  915
\cftsetpnumwidth   .  .
.  .  .  .  .   8,  135,  1061
\cftsetrmarg   8,  135,  1061
\cftsubfigafterpnum   697
\cftsubfigaftersnum
.  .  .  .  .  .  .  .   687,  697
\cftsubfigaftersnumb
.  .  .  .  .  .  .  .   688,  697
\cftsubfigdotsep   .  .   697
\cftsubfigfillnum   .
.  .  .  .  .  .  .  .   691,  697
\cftsubfigfont   690,  697
\cftsubfigindent   .  .
.  .  .  .   679,  682,  697
\cftsubfigleader   .  .   697
\cftsubfigname   .  .  .  .
932,  960,  988,  1024
\cftsubfignumwidth   .
.  .  .  .  .  .  .  .   685,  697
\cftsubfigpagefont   .   697
\cftsubfigpresnum   .
.  .  .  .  .  .  .  .   686,  697
\cftsubparaafterpnum
.  .  .  .  .  .  .  .  .  .  .   453
\cftsubparaaftersnum
.  .  .  .  .  .  .  .   447,  453
\cftsubparaaftersnumb
.  .  .  .  .  .  .  .   448,  453
\cftsubparadotsep   .   453
\cftsubparafillnum   .
.  .  .  .  .  .  .  .   451,  453
\cftsubparafont   450,  453
\cftsubparaindent   .
.  .  .  .   439,  442,  453
\cftsubparaleader   .   453
\cftsubparaname   .  .  .
928,  960,  984,  1020
\cftsubparanumwidth
.  .  .  .  .  .  .  .   445,  453
\cftsubparapagefont   453
\cftsubparapresnum   .
.  .  .  .  .  .  .  .   446,  453
\cftsubsecafterpnum
.  .  .  .  .  .  .  .   333,  354
\cftsubsecaftersnum
.  .  .  .  .  .  .  .   327,  333
\cftsubsecaftersnumb
.  .  .  .  .  .  .  .   328,  333
\cftsubsecdotsep   .  .   333
\cftsubsecfillnum   .
.  .  .  .  .  .  .  .   331,  352
\cftsubsecfont   330,  333
\cftsubsecindent   .  .
.  .  .  .   319,  322,  333
\cftsubsecleader   .  .
.  .  .  .  .  .  .  .   333,  353
\cftsubsecname   .  .  .  .
922,  960,  978,  1014
\cftsubsecnumwidth   .
.  .  .  .  .  .  .  .   325,  333
\cftsubsecpagefont   .
.  .  .  .  .  .  .  .   333,  354
\cftsubsecpresnum   .
.  .  .  .  .  .  .  .   326,  333
\cftsubsubsecafterpnum
.  .  .  .  .  .  .  .  .  .  .   373
\cftsubsubsecaftersnum
.  .  .  .  .  .  .  .   367,  373
\cftsubsubsecaftersnumb
.  .  .  .  .  .  .  .   368,  373
\cftsubsubsecdotsep   373
\cftsubsubsecfillnum
.  .  .  .  .  .  .  .   371,  373
\cftsubsubsecfont   .
.  .  .  .  .  .  .  .   370,  373
\cftsubsubsecindent
.  .  .  .   359,  362,  373
\cftsubsubsecleader   373
\cftsubsubsecname   .
924,  960,  980,  1016
\cftsubsubsecnumwidth
.  .  .  .  .  .  .  .   365,  373
\cftsubsubsecpagefont
.  .  .  .  .  .  .  .  .  .  .   373
\cftsubsubsecpresnum
.  .  .  .  .  .  .  .   366,  373
\cftsubtabafterpnum   738
\cftsubtabaftersnum
.  .  .  .  .  .  .  .   729,  738
\cftsubtabaftersnumb
.  .  .  .  .  .  .  .   730,  738
\cftsubtabdotsep   .  .
.  .  .  .  .  .  .  .   707,  738
\cftsubtabfillnum   .
.  .  .  .  .  .  .  .   733,  738
\cftsubtabfont   732,  738
\cftsubtabindent   .  .
.  .  .  .   721,  724,  738
\cftsubtableader   .  .   738
\cftsubtabname   .  .  .  .
936,  960,  992,  1028
\cftsubtabnumwidth   .
.  .  .  .  .  .  .  .   727,  738
\cftsubtabpagefont   .   738
\cftsubtabpresnum   .
.  .  .  .  .  .  .  .   728,  738
\cfttabafterpnum   .  .   657
\cfttabaftersnum   .  .
.  .  .  .  .  .  .  .   650,  657
\cfttabaftersnumb   .
.  .  .  .  .  .  .  .   651,  657
\cfttabdotsep   .  .  .  .  .   657
\cfttabfillnum   654,  657
\cfttabfont   .  .  .   653,  657
\cfttabindent   .  .  .  .  .
.  .  .  .   642,  645,  657
\cfttableader   .  .  .  .  .   657
\cfttabname   .  .  .  .  .  .  .
934,  960,  990,  1026
\cfttabnumwidth   648,  657
\cfttabpagefont   .  .  .   657
\cfttabpresnum   649,  657
\cfttoctitlefont   .  .
.  .  .  .  .  .  .  .   113,  127
\cftXafterpnum   .   10,  823
53
\cftXaftersnum   .  .   9,  823
\cftXaftersnumb   .   9,  823
\cftXdotsep   .  .  .  .   10,  823
\cftXfillnum   .  .  .  .  .  .   832
\cftXfont   .  .  .  .  .  .   9,  823
\cftXindent   .  .  .  .  .   9,  805
\cftXleader   .  .  .  .   10,  823
\cftXnumwidth   .  .  .   9,  805
\cftXpagefont   .  .   10,  823
\cftXpresnum   .  .  .  .   9,  823
\cftZtitlefont   .  .   7,  893
\chapter   .  .  .  .  .  .  .  .  .   859
\contentsline  2, 1063,
1065,   1069,   1071
\contentsname   .  .  .  .  .
47,  54,  78,  81,  113
\csname   .  .  .   777,  778,
794796,   803,
805,   806,   893,   894
D
\DeclareRobustCommand
.  .  .  .  .  .  .   971,  1007
E
\edef   .  .  .  .  .  .  .  .  .  .  .  .   777
\endcsname   777,  778,
794796,   803,
805,   806,   893,   894
\endinput   .  .  .  .  .  .  .  .   17
\ext@Z   .  .  .  .  .  .  .  .  .  .  .   844
H
\hb@xt@   .  .  .  .  .  .   144,
215,   260,   314,
354,   394,   434,
474,   571,   673,
714,   755,   834,   1046
\Huge   .  .  .  .  .  .  .  .   128,
529,   631,   901,   909
I
\if@bibchapter   .  .  .  .
.  .  .  .  .   76,  478,  580
\if@cftdopart   .  .  .  .  .   148
\if@cfthaschapter   4,
61,   69,   106,   120,
127,   155,   159,
165,   186,   223,
243,   268,   294,
337,   377,   417,
457,   506,   521,
528,   608,   623,
630,   858,   880,   895
\if@cfthaspart   .  .  .  .
.  .  .  .   149,  151,  198
\if@cftkoma  6, 52, 129,
132,   216,   261,
530,   533,   632,
635,   848,   898,   906
\if@cftnctoc   .  .  .  .  .  .
34, 89, 488, 590, 855
\if@cftsubfigopt   .  .
.   37,  573,  759,  763
\if@cfttocbibind   .  .
.  .   22,  96,  495,  597
\if@compatibility   .   190
\if@dotoclof   .  .  .  .  .  .   477
\if@dotoclot   .  .  .  .  .  .   579
\if@dotoctoc   .  .  .  .  .  .   75
\if@restonecol   .  .  .  .   70
\if@twocolumn   .  .  .  .  .   62
\interlinepenalty   .
.   112,  176,  232,
278,   323,   363,
403,   443,   512,
544,   614,   646,
683,   725,   791,   886
L
\l@   .  .  .  .  .  .  .  .  .  .  .  .  .   801
\l@chapter   .  .  .  .  .  .  .   223
\l@figure   .  .  .  .  .  .  .  .   537
\l@paragraph   .  .  .  .  .  .   396
\l@part   .  .  .  .  .  .  .  .  .  .   148
\l@section   .  .  .  .  .  .  .   266
\l@subfigure   .  .  .  .  .  .   676
\l@subparagraph   .  .  .   436
\l@subsection   .  .  .  .  .   316
\l@subsubsection   .  .   356
\l@subtable   .  .  .  .  .  .  .   718
\l@table   .  .  .  .  .  .  .  .  .   639
\l@X   .  .  .  .  .  .  .  .  .  .   14,  784
\Large   .  .  .  .   131,  532,  634
\large   .  .  .  .  .  .  .   203,
207,   209,   218,   219
\leaders   .  .  .  .  .  .  .  .  .   139
\leftskip   .  .  .  .   172,
182,   228,   238,
274,   284,   319,
329,   359,   369,
399,   409,   439,
449,   540,   550,
642,   652,   679,
689,   721,   731,
787,  797,  1055,  1056
\listfigurename   .  .  .
49, 56, 480, 483, 513
\listoffigures   .  .   6,  487
\listoftables   .  .  .   6,  589
\listofX   .  .  .  .  .  .   13,  855
\listtablename   .  .  .  .
51, 58, 582, 585, 615
\lofdepth   .  .  .  .  .  .  .  .   573
\lotdepth   .  .  .  .  .  .  .  .   573
M
\MakeUppercase   .  .  .  .
.  .  .   47,  49,  51,  853
\MessageBreak   .  .  .   2830
\mkern   .  .  .  .  .  .  .  .  .  .  .   139
N
\newif   .  .  .  .  .  .  .   5,  6,
22,   34,   37,   148,   149
\newlistentry   .  .  .  .  .
.   13,  768,  839,  841
\newlistof   .  .  .  .   12,  837
\noexpand   .  .  .  .  .  .  .  .   778
\normalfont   .  .  .   128,
131,   298,   299,
301,   344,   348,
350,   384,   388,
390,   424,   428,
430,   464,   468,
470,   529,   532,
561,   565,   567,
631,   634,   663,
667,   669,   703,
707,   709,   744,
748,   750,   823,
828,   829,   901,   909
\numberline   .  .  .  .  .   3,  143
O
\onecolumn   .  .  .  .  .  .  .   63
P
\PackageError   .  .  .  .  .   782
\PackageInfo   .  .  .  .   18,  20
54
\PackageWarning   .  .  .
.  .  .  .  .  .   15,  27,  773
\parindent   .  .  .  .  .  .  .
.  .   94,  175,  231,
277,   322,   362,
402,   442,   493,
543,   595,   645,
682,   724,   790,   871
\parskip   94,  493,  595,  871
\phantomsection   .  .  .
.  .  .   72,  77,  80,
479,   482,   581,   584
\providecommand   .  .  .
60,  68,  72,  137,
138,   140,   711,   752
\ProvidesPackage   .  .  .   3
S
\sectfont   .  .  .  .   129,
132,   218,   219,
262,   530,   533,
632,   635,   899,   907
\section   .  .  .  .  .  .  .  .  .   861
\size@chapter   .  .  .  .  .
.   129,  530,  632,  899
\size@section   .  .  .  .  .
.   132,  533,  635,  907
T
\tableofcontents   .   6,  88
\textit   .  .  .  .   1053,  1058
\theX   .  .  .  .  .  .  .  .  .   14,  769
\thispagestyle   .  .  .  .   43
\toclevel@subfig   .  .   697
\toclevel@subfigure
.  .  .  .  .  .  .  .   677,  711
\toclevel@subtable   .
.  .  .  .  .  .  .  .   719,  738
\toclevel@X   .  .  .  .  .  .  .   831
\tocloftpagestyle   6,  42
\twocolumn   .  .  .  .  .  .  .   70
Z
\Zdepth   .  .  .  .  .  .  .   13,  844
55