A trick might be to use the notitlepage
option, so \maketitle
will not produce a page with the data. Then we can make LaTeX into thinking that \chapter
does nothing (note that this is inside an environment, where redefining a command is safe since the redefinition will disappear at the end of the environment; don't do this without enclosing the \renewcommand
in a group; it certainly qualifies as a hack):
\documentclass[notitlepage]{report}
\usepackage{lipsum}
\begin{document}
\begin{titlepage}
\thispagestyle{empty}
\title{A draft of my thesis}
\author{A. U. Thor}
\maketitle
\vfill
\begin{abstract}
\lipsum[2]
\end{abstract}
\vfill
\renewcommand{\chapter}[2]{}
\tableofcontents
\vfill
\end{titlepage}
\chapter{Intro}
\lipsum[1]
\end{document}
This works because \tableofcontents
does \chapter*{...}
and so, redefining \chapter
with two arguments to do nothing will ignore the *
and the real argument. You'll get no heading for the table of contents; you can add one by
\begin{center}
\bfseries\contentsname
\end{center}
just before \tableofcontents
, so that the result will be similar to the abstract's heading.
For a cleaner version one should either use \makeatletter
and \makeatother
to access \@starttoc
(as in lockstep's) answer or patching \tableofcontents
with etoolbox
. Being this for a quick hack to be used only in preliminary versions, I believe that this is the simplest trick.