Мне нужно сделать оглавление как в этой книге:
https://math.ru/lib/files/pdf/kurant.pdf.
То есть мне надо добавить слово «Глава» к каждой пронумерованной главе. Причём некоторые главы могут идти без номера, тогда к их названию в содержании ничего добавлять не надо (как в предисловии к изданию в примере). Также я хочу добавить значок параграфа к каждому параграфу в содержании.
Ответы
здесь и
здесь мне не помогли. Скорее всего, это из-за того, что я неправильно переопределяю формат заголовков командой
defaulttitleformat и использую
titlesec,
titletoc,
tocloft одновременно.
Минимальный работаюющий пример:
\documentclass[twoside, a4paper, 11pt]{article}
%\usepackage{showframe}
\usepackage{microtype}
\usepackage{fullpage}
\usepackage{anyfontsize}
\usepackage[X2,T1,T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english, russian]{babel}
\usepackage{parskip}
\linespread{0.8}
\usepackage{indentfirst}
\setlength{\parindent}{12pt}
\usepackage{setspace}
\usepackage{marginnote}
\usepackage[top = 0.77 cm, outer = 2.5 cm, bottom = 2.27 cm, inner = 1.27 cm, heightrounded, marginparwidth = 2 cm, marginparsep = 0.25 cm]{geometry}
\renewcommand*{\marginfont}{\slshape\tiny}
\usepackage{xcolor}
\usepackage{etoolbox}
\usepackage{enumerate}
\usepackage[shortlabels]{enumitem}
\usepackage[newparttoc]{titlesec}
\usepackage[titles]{tocloft}
%\usepackage{etoc}
\usepackage{titletoc}
\usepackage{caption}
\makeatletter
\@addtoreset{section}{part}
\@addtoreset{subsection}{section}
\@addtoreset{subsubsection}{subsection}
\makeatother
\renewcommand{\numberline}[1]{#1~}
\newcommand{\defaulttitleformat}{
\renewcommand*\thepart{\Roman{part}}
\renewcommand*\thesection{\arabic{section}}
\renewcommand*\thesubsection{\Roman{subsection}}
\renewcommand*\thesubsubsection{\arabic{subsubsection}}
\titleformat{\part}[display]{\Huge\scshape\centering}{Глава~\thepart}{0ex}{}[]
\titleformat{\section}[hang]{\vspace{8pt}\Large\scshape\bfseries}{\S\thesection.}{0ex}{\ }[]
\titleformat{\subsection}[hang]{\vspace{4pt}\scshape\bfseries}{\thesubsection.}{0ex}{\ }[]
\titleformat{\subsubsection}[hang]{\bfseries}{\thesubsubsection.}{0ex}{\ }[]
}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
%\renewcommand{\sectionmark}[3]{ \markboth{#1} }
\fancyhead{}
\headheight = 1 cm
\newcommand{\defaultfancy}{
\fancyhf{}
\fancyhead{}
\fancyhead[RO]{\small\textbf{\thepage}} %% odd-right
\fancyhead[LE]{\small\textbf{\thepage}} %%% even-left
\fancyhead[CE]{\small\scshape\bfseries Глава~\thepart.}
\fancyhead[CO]{\small\scshape\bfseries \S\thesection.\ \leftmark.}
\fancyfoot[L,R,C]{}
}
\usepackage{pdfrender}
\usepackage{hyperref}
\definecolor{linkcolor}{HTML}{FF0000}
\definecolor{urlcolor}{HTML}{0000FF}
\hypersetup{pdfstartview=FitH, linkcolor=linkcolor, urlcolor=urlcolor, colorlinks=true}
\usepackage{cleveref}
\usepackage{hypcap}
\usepackage{lipsum}
\begin{document}
%\pagenumbering{gobble}
\pdfrender{StrokeColor=black,TextRenderingMode=2,LineWidth=0.05pt}
\pagenumbering{arabic}
\fancyhf{}
\fancyhead{}
\pagestyle{fancy}
\defaultfancy
\defaulttitleformat
\part*{Введение}
\section{Первый параграф}
\lipsum[1]
\section{Второй}
\subsection{Подпункт 1}
\subsubsection{Подподпункт}
\subsection{Подпункт 2}
\part{Общая часть}
\section{Второй}
\subsection{Подпункт 1}
\subsubsection{Подподпункт}
\lipsum[3-4]
\subsection{Подпункт 2}
\lipsum[5-6]
\definecolor{linkcolor}{HTML}{0000FF}
\normalsize
\newpage
\makeatletter
\renewcommand{\contentsname}{\hfill\huge Оглавление\hfill}
\hypertarget{TOC}{}
\let\latexl@part\l@part
\let\latexl@section\l@section
\let\latexl@subsection\l@subsection
%\def\l@part#1#2{\begingroup\latexl@part{\huge{#1}}{#2}\endgroup}
%\def\l@section#1#2{\begingroup\let\numberline\@gobble\latexl@section{#1}{#2}\endgroup}
%\def\l@subsection#1#2{\begingroup\let\numberline\@gobble\latexl@subsection{#1}{#2}\endgroup}
\makeatother
\renewcommand{\cftpartfont}{\bfseries\scshape\huge}
\tableofcontents{}
\end{document}
Ещё я заметил, что пакет
fancyheader конфликтует с каким-то из пакетов
titlesec,
titletoc,
tocloft. Это можно видеть по двойной нумерации в верхнем колонтитуле на первой странице, и по огромному заголовку в верхнем колонтитуле на странице с содержанием --- всё из-за строки
%\renewcommand{\sectionmark}[3]{ \markboth{#1} }
Подскажите, как исправить эти ошибки.