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
{\addcontentsline{toc}{part}{\thepart\hspace{1em}#1}}
{\addcontentsline{toc}{part}{\protect\numberline{\texorpdfstring{-~\thepart~-}{\thepart~}}\texorpdfstring{\\MakeUppercase{#1}}{#1}}}
{}{\FAIL}
\makeatother
\usepackage{titletoc}
\titlecontents{part}
[0em]
{\addvspace{1.5pc}\filcenter}
{\thecontentslabel}
{}
{} % without page number
[\addvspace{.5pc}]
\usepackage[hidelinks,linktoc=all]{hyperref}
\begin{document}
\ttfamily
\tableofcontents
\part{First part}
\end{document}




First part). Can I somehow put it into a color box which, as I understand, only may be done by access to#1? – Jinwen Feb 08 '21 at 00:38