迷你文件
\documentclass[12pt,openany,oneside]{book}
\usepackage{titletoc}
\usepackage{lipsum}
\titlecontents{part}[3pc]{\addvspace{3pc}\filcenter}
{\sffamily\bfseries PART \thecontentslabel\\*[.2pc]\large}
{\sffamily\bfseries\large}{}[\addvspace{.5pc}]
\title{Title}
\date{}
\author{pythonee}
\begin{document}
\maketitle
\frontmatter
\tableofcontents
\chapter{Front One}
\lipsum[1]
\mainmatter
\part{Introduction}
\chapter{history}
\lipsum
\backmatter
\chapter{Back One}
\lipsum[1]
\end{document}
Toc 输出如下所示:
\frontmatter
现在我想使和之间的空格\mainmatter
等于\frontmatter and
Toc 中的 \mainmatter`。
顺便说一下。为什么部分未显示在目录中。我已使用 对其进行了自定义titletoc
。
答案1
对于第二个问题,您需要使用newparttoc
包选项 fortitlesec
和\titleformat
for\part
来使其\titlecontents{part}...
行为符合预期(我发现这有点令人惊讶;使用scrbook
而不是book
这个是没有必要的,所以我不知道这是否是设计时故意的)。
对于间距问题,您可以重新定义\backmatter
以book.cls
实现添加所需的垂直空间。
现在,在这个答案的评论中提出了额外的请求,您可以使用它\titlecontents
来格式化章节条目。
这是一个完整的例子:
\documentclass[12pt,openany,oneside]{book}
\usepackage[newparttoc]{titlesec}
\usepackage{titletoc}
\usepackage{lipsum}
\titleformat{\part}[display]
{\centering\Huge\bfseries}{\partname~\thepart}
{1em}{\normalfont\bfseries}
\titlecontents{part}[3pc]{\addvspace{3pc}\filcenter}
{\sffamily\bfseries\MakeUppercase{\partname}~\thecontentslabel\\*[.2pc]\large}
{\sffamily\bfseries\large}{}[\addvspace{3pc}]
\titlecontents{chapter}[0em]{}
{\bfseries\chaptername~\thecontentslabel\hspace{1em}}
{\bfseries}
{\hfill\bfseries\contentspage}
\makeatletter
\renewcommand\backmatter{%
\if@openright
\cleardoublepage
\else
\clearpage
\fi
\addtocontents{toc}{\protect\addvspace{3pc}}
\@mainmatterfalse}
\makeatother
\title{Title}
\date{}
\author{pythonee}
\begin{document}
\maketitle
\frontmatter
\tableofcontents
\chapter{Front One}
\lipsum[1]
\mainmatter
\part{Introduction}
\chapter{history}
\lipsum
\chapter{Some more history}
\lipsum
\backmatter
\chapter{Back One}
\lipsum[1]
\end{document}