# titlesec interferes with the part title in TOC

In this answer, I designed a simple TOC style. However, I find the TOC setting for part doesn't work normally if the title format for \part has been modified by titlesec.

Without \titleformat{\part}, the TOC looks like (which is the desired result):

However, with \titleformat{\part}, the TOC becomes:

How can I get the desired effect back?

Below is a MWE.

\documentclass{book}

% \usepackage{titlesec}
% \titleclass{\part}{top} % make part like a chapter
% \titleformat{\part}[display]
%     {\filleft}
%     {\MakeUppercase{\partname}~\thepart}
%     {1em}
%     {\MakeUppercase}

\usepackage{etoolbox}
\makeatletter
\patchcmd\@part% change the part style
{}{\FAIL}
\makeatother

\usepackage{titletoc}
\titlecontents{part}
[0em]
{\thecontentslabel}
{}
{} % without page number

\begin{document}
\ttfamily

\tableofcontents

\part{First part}

\end{document}


You need the newparttoc option and to change the rendering of \thecontentslabel.

\documentclass{book}

\usepackage[newparttoc]{titlesec}

\titleclass{\part}{top} % make part like a chapter
\titleformat{\part}[display]
{\filleft}
{\MakeUppercase{\partname}~\thepart}
{1em}
{\MakeUppercase}

\usepackage{titletoc}
\titlecontents{part}
[0em]
{- \thecontentslabel\ - \\}
{}
{} % without page number

\begin{document}

\ttfamily

\tableofcontents

\part{First part}

\end{document}


Suppose you want to process the contents in the toc. You can do something like

\titlecontents{part}
[0em]
{\formattocpart} % numbered
{} % unnumbered
{} % filler

\newcommand\formattocpart[1]{%
\colorbox{red!60!green}{%
\begin{tabular}{@{}c@{}}
- \thecontentslabel\ - \\
#1
\end{tabular}%
}%
}


The second and third mandatory arguments to \titlecontents are similar to the last mandatory argument to \titleformat.

• With this method one seems to lose access to the title (First part). Can I somehow put it into a color box which, as I understand, only may be done by access to #1? Feb 8 at 0:38
• @Jinwen what precisely do you want to color? Feb 8 at 8:23
• Actually I want to put the title into a box to control its width. Feb 8 at 8:25
• @Jinwen In the toc or in the actual part title? Feb 8 at 8:28
• Just in the toc. To be precise, I wish to mimic the look of a typewriter, making sure all the characters are vertically aligned, thus sometimes the text needs to shift a half width of one character. Feb 8 at 8:31