Centrar una parte de varias líneas en el toc

Centrar una parte de varias líneas en el toc

Estoy perplejo. ¿Cómo puedo centrar el título de una parte de varias líneas en el índice?

\documentclass[a4paper,12pt,openright]{book}  

\usepackage{tocloft}% toc spacing and ragged right (below)  
\cftpagenumbersoff{part}  
\renewcommand{\cfttoctitlefont}{\hfill\Large}  
\renewcommand{\cftaftertoctitle}{\hfill}  

\begin{document}

\tableofcontents  
\chapter{Chapter 1}  
\chapter{Chapter 2}  
\part{A moderately long part title}  
\chapter{Chapter 3}  
\chapter{Chapter 4}  
\chapter{Chapter 5}  
\part{A Very very very long part title which runs over multiple lines in the table of contents}  
\chapter{Chapter 6}  
\chapter{Chapter 7}  
\chapter{Chapter 8}  

\end{document}

Idealmente, me gustaría que el toc se presentara como:

                       Contents             
  1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . 1

                        Part I
             A moderately long part title
    
  2. Capitulo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

  3. Capítulo 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
  4. Capítulo 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

                       Part II
     A Very very very long part title which runs 
     over multiple lines in the table of contents
    
  5. Capítulo 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

  6. Capítulo 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

Lo siento si me han preguntado esto antes, pero he pasado horas intentando encontrar una solución en vano.

Respuesta1

Desde mi punto de vista, usar un parche \@partes más fácil que usar tocloftcomandos aquí.

\documentclass[a4paper,12pt,openright]{book}  

\usepackage{xpatch}
\usepackage{tocloft}% toc spacing and ragged right (below)  



%\cftpagenumbersoff{part}  
\makeatletter
\xpatchcmd{\@part}{%
  \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
}{%
  % Rather use an `\addcontentsline` to get rid off the restrictions of `\contentsline` etc. 
  \addtocontents{toc}{\begingroup\Large \mdseries\protect\centering\partname\ \thepart\par\large\protect\centering#1\par\endgroup}
}{}{}


\makeatother

\renewcommand{\cfttoctitlefont}{\hfill\Large}  
\renewcommand{\cftaftertoctitle}{\hfill}  


\begin{document}

\tableofcontents  
\chapter{Chapter 1}  
\chapter{Chapter 2}  
\part{A moderately long part title}  
\chapter{Chapter 3}  
\chapter{Chapter 4}  
\chapter{Chapter 5}  
\part{A Very very very long part title which runs over multiple lines in the table of contents}  
\chapter{Chapter 6}  
\chapter{Chapter 7}  
\chapter{Chapter 8}  

\end{document}

ingrese la descripción de la imagen aquí

Una configuración diferente con un\parbox

\documentclass[a4paper,12pt,openright]{book}  




\usepackage{xpatch}
\usepackage{tocloft}% toc spacing and ragged right (below)  


\DeclareRobustCommand{\wrapmytitles}[1]{%
  \leavevmode

  \centering
  \parbox{0.7\linewidth}{\centering #1}%

}

\makeatletter
\xpatchcmd{\@part}{%
  \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
}{%
  \addtocontents{toc}{\begingroup\Large \mdseries\protect\centering\partname\ \thepart\par\large\wrapmytitles{#1}\endgroup}
}{}{}


\makeatother

\renewcommand{\cfttoctitlefont}{\hfill\Large}  
\renewcommand{\cftaftertoctitle}{\hfill}  


\begin{document}

\tableofcontents  
\chapter{Chapter 1}  
\chapter{Chapter 2}  
\part{A moderately long part title}  
\chapter{Chapter 3}  
\chapter{Chapter 4}  
\chapter{Chapter 5}  
\part{A Very very very long part title which runs over multiple lines in the table of contents}  
\chapter{Chapter 6}  
\chapter{Chapter 7}  
\chapter{Chapter 8}  

\end{document}

ingrese la descripción de la imagen aquí

información relacionada