我使用以下代码生成了以下目录。有没有办法不在非编号部分条目前包含“部分”?
\documentclass[a4paper, 12pt]{report}
\setcounter{tocdepth}{1}
\usepackage[titles]{tocloft}
\renewcommand{\thepart}{\Roman{part} :}
\renewcommand\cftpartpresnum{Part~}
\begin{document}
\tableofcontents
\cleardoublepage
\addcontentsline{toc}{part}{Non Numbered part}
\part*{Non Numbered part}
\part{Numbered part}
\chapter{Chap 1}
\part{Numbered part}
\chapter{Chap 1}
\chapter{Chap 2}
\end{document}
答案1
这是一个将\cftpartpresnum
本地重新定义为空的解决方案。
\documentclass[a4paper, 12pt]{report}
\setcounter{tocdepth}{1}
\usepackage[titles]{tocloft}
\renewcommand{\thepart}{\Roman{part} :}
\renewcommand\cftpartpresnum{Part~}
\newcommand{\addparttoc}[1]{%
\addtocontents{toc}{\begingroup\def\protect\cftpartpresnum{}}
\addcontentsline{toc}{part}{#1}
\addtocontents{toc}{\endgroup}}
\begin{document}
\tableofcontents
\cleardoublepage
\addparttoc{Non Numbered part}
\part*{Non Numbered part}
\part{Numbered part}
\chapter{Chap 1}
\part{Numbered part}
\chapter{Chap 1}
\chapter{Chap 2}
\end{document}
答案2
您的 MWE 的缩写版本可以有效地满足您的要求(在您纠正我的任何拼写错误之后)。
\documentclass{report}
\usepackage[titles]{tocloft}
\renewcommand{\thepart}{\Roman{part} :}
\begin{document}
\tableofcontents
\addcontentsline{toc}{part}{Unnumbered}
\part*{Unnumbered}
\addtocontents{toc}{%
\protect\renewcommand{\protect\cftpartpresnum}{Part~}}
\part{Numbered Part}
\part{Second numbered part}
\end{document}
使用默认的 ToC 条目样式不会打印您不想要的未编号部分。对于编号部分,您必须将更改插入Part~
ToC 文件本身。