[Tex/LaTex] coloring the page numbers in the table of contents

colorhyperreftable of contents

I try to color the page numbers of my table of contents.

I'm using the package hyperref along with the options :

\hypersetup{
  colorlinks,
  linkcolor=wine-stain % custom color
}

Here's the output :

tableofcontents


The numbers remain black..

What should I do so the numbers become the same color as defined for the sections ?

I tried to \color{wine-stain}{\tableofcontents} but still that doesn't work since "Contents" is also colorized and the subsection numbers are remaining black.

Best Answer

This happens because the links are only the titles of entries in the ToC. The page numbers themselves are not hyperlinked. Add the option

linktoc=all

to your set of hyperref options, which should link both the section names as well as the page number.

enter image description here

\documentclass{book}
\usepackage{hyperref,xcolor}% http://ctan.org/pkg/{hyperref,xcolor}
\definecolor{wine-stain}{rgb}{0.5,0,0}
\hypersetup{
  colorlinks,
  linkcolor=wine-stain,
  linktoc=all
}
\begin{document}
\tableofcontents

\chapter{First chapter}
\section{First section}
\subsection{First subsection}
\subsubsection{First subsubsection}
\subsubsection{Second subsubsection}
\subsection{Second subsection}
\subsubsection{First subsubsection}
\subsubsection{Second subsubsection}

\section{Second section}
\subsection*{An unnumbered first subsection}
\subsubsection{First subsubsection}
\subsubsection{Second subsubsection}
\subsection*{An unnumbered second subsection}
\subsubsection{First subsubsection}
\subsubsection{Second subsubsection}

\chapter{Second chapter}
\section{First section}
\subsection*{An unnumbered first subsection}
\subsubsection{First subsubsection}
\subsubsection{Second subsubsection}
\subsection*{An unnumbered second subsection}
\subsubsection{First subsubsection}
\subsubsection{Second subsubsection}

\section{Second section}
\subsection{First subsection}
\subsubsection{First subsubsection}
\subsubsection{Second subsubsection}
\subsection{Second subsection}
\subsubsection{First subsubsection}
\subsubsection{Second subsubsection}

\end{document}

Adding linktocpage is not sufficient, since the sectional units are then not hyperlinked. Unless, of course, this is what you're after in the first place. That is, if used, it provides a mutually exclusive switch between hyperlinking in the ToC. In fact, options related to hyperlinking from the ToC include:

  • linktoc=none: No hyperlinking in the ToC;
  • linktoc=section: Only the section titles are hyperlinked;
  • linktoc=page: Only the page numbers are hyperlinked;
  • linktoc=all: Both section titles and page numbers are hyperlinked;
  • linktocpage: Similar to linktoc=page

The linktoc key-value is undocumented, but stem from the following code in hyperref.dtx:

\chardef\Hy@linktoc@none=0 %
\chardef\Hy@linktoc@section=1 %
\chardef\Hy@linktoc@page=2 %
\chardef\Hy@linktoc@all=3 %
\ifHy@linktocpage
  \let\Hy@linktoc\Hy@linktoc@page
\else
  \let\Hy@linktoc\Hy@linktoc@section
\fi
\define@key{Hyp}{linktoc}{%
  \@ifundefined{Hy@linktoc@#1}{%
    \Hy@Warning{%
      Unexpected value `#1' of\MessageBreak
      option `linktoc' instead of `none',\MessageBreak
      `section', `page' or `all'%
    }%
  }{%
    \expandafter\let\expandafter\Hy@linktoc
    \csname Hy@linktoc@#1\endcsname
  }%
}