I have lots of little sections and subsections in an article. some of them have a title and some don't. Is it possible to have a table of contents where only the named sections/subsections appear in it?

\chapter{My chapter}
\section{Alice}
\section{}
\subsection{}
\subsection{Ava}
\section{Bob}
\section{}
\section{}
\section{Charles}


I want only the sections and subsections named Alice, Ava, Bob, Charles to show up in the table of contents.

• Yes thats what I meant...fixed the title. thanks – smilingbuddha Nov 20 '18 at 7:44

With a standard class you could patch \@sect:

\documentclass{report}
\usepackage{xpatch}
\makeatletter
\xpatchcmd\@sect
{\addcontentsline {toc}{#1}{\ifnum #2>\c@secnumdepth \else \protect \numberline {\csname the#1\endcsname }\fi #7}}
{%
\if!#7!\else
\originaladdcontentsline {toc}{#1}{\ifnum #2>\c@secnumdepth \else \protect \numberline {\csname the#1\endcsname }\fi #7}%
\fi
}{}{\PatchFailed}
\xpatchcmd\@sect
{\addcontentsline {toc}{#1}{\ifnum #2>\c@secnumdepth \else \protect \numberline {\csname the#1\endcsname }\fi #7}}
{%
\if!#7!\else
\originaladdcontentsline {toc}{#1}{\ifnum #2>\c@secnumdepth \else \protect \numberline {\csname the#1\endcsname }\fi #7}%
\fi
}{}{\PatchFailed}
\makeatother
\begin{document}
\tableofcontents
\chapter{My chapter}
\section{Alice}
\section{}
\subsection{}
\subsection{Ava}
\section{Bob}
\section{}
\section{}
\section{Charles}
\end{document}


Result:

But you could also use a KOMA-Script class. Then there would be no TOC entry for empty section titles by default:

\documentclass{scrreprt}
\begin{document}
\tableofcontents
\chapter{My chapter}
\section{Alice}
\section{}
\subsection{}
\subsection{Ava}
\section{Bob}
\section{}
\section{}
\section{Charles}
\end{document}


Result:

You need to redefine the tex macros that render the toc entry. That said, what you need to edit depends on the document class and the packages you include into your document. For the simplest latex book, no packages used, that would be something like

\makeatletter
\def\l@section#1#2{%
\global\let\oldnumline\numberline
\def\numberline##1{}%
\if!#1!
\global\let\numberline\oldnumline
\else
\global\let\numberline\oldnumline
\@dottedtocline{1}{1.5em}{2.3em}{#1}{#2}%
\fi}
\def\l@subsection#1#2{%
\global\let\oldnumline\numberline
\def\numberline##1{}%
\if!#1!
\global\let\numberline\oldnumline
\else
\global\let\numberline\oldnumline
\@dottedtocline{2}{3.8em}{3.2em}{#1}{#2}%
\fi}
\makeatother


that you need to put before \begin{document}.

• This does not work, because the first argument of \l@section or \l@subscetion incudes \numberline{<number>} if the section or subsection is numbered. – esdd Nov 20 '18 at 12:31
• @esdd good point… – Lupino Nov 20 '18 at 12:48

With etoc you can have both types of tables of contents at the same time (with the standard classes).

\documentclass{report}

\usepackage{etoc}

\newcommand{\trimmedtableofcontents}{%
\begingroup
\etocsetstyle{chapter}
{}
{\ifx\etocthename\empty
\else
\etocifnumbered
{\etocsavedchaptertocline
{\numberline{\etocnumber}\etocname}{\etocpage}}
{\etocsavedchaptertocline{\etocname}{\etocpage}}%
\fi
}%
{}
{}
\etocsetstyle{section}
{}
{\ifx\etocthename\empty
\else
\etocifnumbered
{\etocsavedsectiontocline
{\numberline{\etocnumber}\etocname}{\etocpage}}
{\etocsavedsectiontocline{\etocname}{\etocpage}}%
\fi
}%
{}
{}
\etocsetstyle{subsection}
{}
{\ifx\etocthename\empty
\else
\etocifnumbered
{\etocsavedsubsectiontocline
{\numberline{\etocnumber}\etocname}{\etocpage}}
{\etocsavedsubsectiontocline{\etocname}{\etocpage}}%
\fi
}%
{}
{}
\tableofcontents
\endgroup
}

\begin{document}
\trimmedtableofcontents
\tableofcontents
\chapter{My chapter}
\section{Alice}
\section{}
\subsection{}
\subsection{Ava}
\section{Bob}
\section{}
\section{}
\section{Charles}
\end{document}


First page:

Second page: