
Я пытаюсь воспроизвести формат оглавления, показанный здесь:
Моя попытка:
\documentclass[12pt]{book}
\usepackage{tocloft,titletoc}
%\cftsetindents{section}{0em}{2em}
%\cftsetindents{subsection}{0em}{2em}
\usepackage{theanomodern}
\usepackage[baskerville]{newtxmath}
\renewcommand{\thechapter}{\Roman{chapter}}
\renewcommand{\contentsname}{\parbox{\linewidth}{\centerline{\Large CONTENTS}~\\[-1.5cm]}}
\titlecontents*{chapter}[0pt]{}{\textsc{\chaptername} \thecontentslabel:\quad}{}{\bfseries\hfill\contentspage}
\setcounter{tocdepth}{0}
\usepackage{hyperref}
\hypersetup{linktoc=none,}
\begin{document}
\tableofcontents
\pagenumbering{arabic}
\clearpage
%\addcontentsline{toc}{part}{\protect\centering{}Chapter I}
\part{One}
\chapter{The Greatest Common Divisor of Two Numbers}
\part{Two}
\chapter{Prime Numbers and Factorization into Prime Factors}
\end{document}
Вывод немного близок, но не совсем. Отсутствующие функции:
- Часть и метка не начинается с Части. Для этого я уже пробовал модифицировать с помощью,
\titlecontents
но получил ошибку, поэтому удалил его из MWE. - Детали центрированы
- В конце частей нет ссылки на страницу.
- Наименование деталей указано на отдельной строке.
- Названия глав выровнены, чего нет в моем выводе
решение1
В этом решении токлофт не используется.
Сложность заключалась в том, чтобы отделить номер детали от названия в гиперссылке.
\documentclass[12pt]{book}
\usepackage{etoolbox}
%\usepackage{showframe}% alignment tool
\usepackage{theanomodern}
\usepackage[baskerville]{newtxmath}
\renewcommand{\thechapter}{\Roman{chapter}}
\renewcommand{\contentsname}{\parbox{\linewidth}{\centerline{\Large CONTENTS}~\\[-1.5cm]}}
\makeatletter
\patchcmd{\@part}{\addcontentsline{toc}{part}{\thepart\hspace{1em}#1}}%
{\addcontentsline{toc}{part}{\protect\numberline{\thepart}#1}}{}{FAILED}%
\newcommand*{\@partnumber}{}% reserve global name
\renewcommand*\l@part[2]{%
\ifnum \c@tocdepth >-2\relax
\addpenalty{-\@highpenalty}%
\addvspace{1.0em \@plus\p@}%
\begingroup
\def\numberline##1{\xdef\@partnumber{##1}}%
\setbox0=\vbox{\centering\bfseries\strut #1}% Could be more than one line
\centering
\leavevmode
\hyperlink{\Hy@tocdestname}{\large \partname~\@partnumber}\\
\usebox0
\global\@nobreaktrue
\everypar{\global\@nobreakfalse\everypar{}}%
\endgroup
\fi}
\renewcommand*\l@chapter[2]{% #1 = title, #2 = pagenumber
\begingroup
\def\numberline##1{\hbox to \@tempdima{\chaptername~##1:\hfill}}% add \chaptername
\@dottedtocline{0}{0pt}{3cm}{#1}{\hyperlink{\Hy@tocdestname}{\bfseries #2}}% 3cm is the space reserved for the chapter number box
\endgroup}
\makeatother
\setcounter{tocdepth}{0}
\usepackage{hyperref}
\hypersetup{linktoc=none,}
\begin{document}
\tableofcontents
\pagenumbering{arabic}
\clearpage
%\addcontentsline{toc}{part}{\protect\centering{}Chapter I}
\part{One}
\chapter{The Greatest Common Divisor of Two Numbers}
\part{Two}
\chapter{Prime Numbers and Factorization into Prime Factors}
\end{document}