[Tex/LaTex] How to get \chaptername to appear in the table of contents

chapterstable of contentstocloft

In my tex file I have changed the chapter name from 'Chapter' to 'Day', using:

\renewcommand \chaptername {Day}

But when I generate a table of contents it only shows '1' and not 'Day 1'. How do I get the 'Day' to show up in the contents?

Best Answer

I recommend using the tocloft package, although I suspect the titletoc package could also be used quite easily. tocloft provides many hooks for content to be inserted into the table of contents.

Here's an example:

\documentclass{book}
\usepackage{tocloft,calc}
\renewcommand\chaptername{Day}
\renewcommand\cftchappresnum{\chaptername\space}
\setlength{\cftchapnumwidth}{\widthof{\textbf{Day~999~}}}
\begin{document}
\tableofcontents
\setcounter{chapter}{500}
\chapter{Hello}
\end{document}

In this case \cftchappresnum inserts its argument in the chap entry, pre (before) the snum (sectioning number).

As mentioned by Juan (thanks!), it's also necessary to increase the size of the space allocated for the "chapter number". In this case we calculate how large Day 999 would be (using the calc package) and use that length.