views:

2498

answers:

3

I have a section followed by a table of contents like so:

\section{Section1}
ABC.

\addcontentsline{toc}{section}{Table of Contents}
\tableofcontents
\newpage
\addcontentsline{toc}{section}{List of Figures}
\listoffigures
\newpage

\section{Section2}
DEF.
\section{Section3}
GHI.

My issue is that the "Table of Contents" and "List of Figures" entries in the table of contents link (in the generated pdf) to the wrong place in the file. They both link to the first section section on page 1. The entry in the table is correct (TOC says page 2 and LOF says page 3), but the link goes to the wrong place.

A: 

This behavior is due to the fact that \tableofcontents inserts a page break before writing the contents. Hence, your PDF bookmark will point to the page before. Depending on your document class, you can manually insert a number of \newpage commands to keep \tableofcontents from adding another. One or two should be sufficient.

I know, it is a hacky solution, and there might exist a package to solve the problem, but this is how I work around the problem.

Tormod Fjeldskår
That didn't work, I added 1-3 new pages and it still links to the beginning of the previous section. I did the compile twice.
verhogen
+2  A: 

You'll need to use the \phantomsection command:

\section{Section1}
ABC.
\phantomsection
\addcontentsline{toc}{section}{Table of Contents}
\tableofcontents
\newpage
\phantomsection
\addcontentsline{toc}{section}{List of Figures}
\listoffigures
\newpage

\section{Section2}
DEF.
\section{Section3}
GHI.

See the hyperref manual.

Noah
This only works as long as the table of contents and the list of figures don't span more than a single page. Otherwise, the links will point to the last page of the listings.
Tormod Fjeldskår
I've suggested a different solution that should work either way.
Noah
A: 

If you're doing this for the bibliography, list of tables or list of figures,

\usepackage[nottoc]{tocbibind}

should fix it, without the wrong-page problems. Otherwise, I havent come across a better solution than \phantomsection with \addcontentsline.

Paul Biggar