33

Is there any chance to hide the "Table of contents" heading that \tableofcontents generates?

If figured that \renewcommand\contentsname{} works (it sets the title to "", an empty string), but it does not remove the heading completely - the space is still blocked.

  • Isn't \tableofcontents* a better way to do it? – gnz Jun 2 '12 at 8:37
  • Doesn't work for me? I'm just getting that asterisk placed right below the heading. – Niko Jun 2 '12 at 8:41
  • \tableofcontents* removes the ToC entry from the ToC itself in the memoir class. – lockstep Jun 2 '12 at 8:47
33

If you are using the article class you can find the definition of \tableofcontents in the article.cls file:

\newcommand\tableofcontents{%
    \section*{\contentsname
        \@mkboth{%
           \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
    \@starttoc{toc}%
    }

Now you can just remove the part where \section* is defined:

\documentclass{article}
\makeatletter
\renewcommand\tableofcontents{%
    \@starttoc{toc}%
}
\makeatother
\begin{document}
\tableofcontents
\section{test}
\section{test2}
\end{document}
| improve this answer | |
  • 1
    How and why does this work? (Feel free to edit the answer into your answer) – doncherry Jun 22 '12 at 22:04
  • 1
    @doncherry Just take the original definition of \tableofcontents from article.cls and remove the code that creates the heading. – Thorsten Jun 23 '12 at 6:08
  • 2
    I applied current validated answer (see above) and it didn't work at first. I had a LaTeX Error: Something's wrong--perhaps a missing \item error message. All I had to do was to add spaces before \tableofcontents. – kogexo May 28 '18 at 8:45
4

If you want no TOC, but still want the "sidebar" created by hyperref you may do this:

\documentclass{...}
...
\usepackage{hyperref}

\begin{document}
\newsavebox{\hidden}\sbox{\hidden}{\vbox{\tablefocontents}}

<code>
\end{document}
| improve this answer | |
  • The bookmarks are produced independently of the presence of the TOC. – egreg Jun 2 '12 at 10:36
  • @egreg Thank you for this information, didn't know that. – Peter Breitfeld Jun 2 '12 at 10:44
2

You say that using an empty name does not remove the space before the TOC. You can change that using the extra code below:

\renewcommand\contentsname{} % the empty name

\begingroup
\let\clearpage\relax
\vspace{-5cm} % the removed space. Set as appropriate
\tableofcontents
\endgroup
| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.