如何使用 tocloft/titletoc 和书籍类来分行部分目录条目

如何使用 tocloft/titletoc 和书籍类来分行部分目录条目

我目前正在书籍文档类中编写 LaTeX 文档。在我的目录中,我希望某些条目(在我的情况下是部分)的实际标题以换行符的形式出现在章节类型的通用名称(“部分”)后面,后跟数字(“I”、“II”等),因此它应该如下所示:

第一部分

第一部分标题

第二部分

第二部分标题

我正在使用 tocloft 包来自定义目录,其手册实际上有一个示例,准确描述了如何实现这一点。显然,无论出于何种原因,换行命令(参见 MWE)对书籍类不起作用。关于这里的问题有什么建议吗?

\documentclass{book}
\usepackage{tocloft}
\renewcommand{\cftpartpresnum}{\partname\ }
\renewcommand{\cftpartaftersnumb}{\\ }
\begin{document}
  \tableofcontents
  \part{Title of first part}
  \part{Title of second part}
\end{document}

编辑 1:我遵循了 @locksteps 的建议并尝试使用该包实施解决方案titletoc。但是,现在我遇到了一个问题,即对于部分条目,无论出于何种原因,标签编号始终附加在实际标题上,对于章节等,可以单独调用标签

\documentclass{book}
\usepackage{titletoc}
\titlecontents{part}[0pt]{}{}{\Large\bfseries Part\\*}{}[]
\titlecontents{chapter}[0pt]{}{Chapter \thecontentslabel\\*}{}{}[]
\begin{document}
   \tableofcontents
   \part{The first part}
   \chapter{The first chapter}
\end{document}

答案1

toclofts\cftXaftersnumb宏系列不适用于类中的X= 。引自手册第 9 页:partbooktocloft

在标准类中,目录条目\part只是排版为编号和标题,后面是页码, \cftpartpresnum在排版编号和标题之前调用宏。使用标准类时,\cftpartaftersnum\cftpartaftersnumb宏不起作用,但如果使用非标准类,它们可能会起作用。

答案2

问题在于,标准类向目录发送信息的方式对于部分和章节是不同的。文档中讨论了这一点titletoc:要获得各部分的一致行为,您需要重新定义\part命令。

一种方法是使用不同的文档类,如KOMA脚本scrbook。另一种方法是使用titlesec带有新部分选项并发出重新定义的命令之一\part(如\titleformat)。第二个选项如下所示,位于注释区域:

\documentclass{scrbook}

% If you really want the standard book class, uncomment the following:
%\documentclass{book}
%\usepackage[newparttoc]{titlesec}
%\titleformat{\part}[display]{\center\normalfont\huge\bfseries}
%                            {\partname\ \thepart}{20pt}{\Huge} 
\usepackage{titletoc}
\titlecontents{part}[0pt]{}{\Large\bfseries Part \thecontentslabel\\*}
                           {\Large\bfseries Unnumbered Part\\*}{}[]
\titlecontents{chapter}[0pt]{}{Chapter \thecontentslabel\\*}
                              {Unnumbered Chapter\\*}{}[]
\begin{document}
  \tableofcontents
  \part{The first part}
  \chapter{The first chapter}
\end{document}

相关内容