隐藏目录中 \part 的页码

隐藏目录中 \part 的页码

我为章节和部分命令创建了两个自定义宏。当我使用以下代码时:

\documentclass[final]{book}

\usepackage{lipsum}
\usepackage{tocloft}
\renewcommand{\cftchapleader}{\cftdotfill{\cftdotsep}}
\renewcommand{\cftchapfont}{\mdseries}
\renewcommand{\cftchappagefont}{\mdseries}

\long\def \mychapter#1{
\chapter*{#1}
\addcontentsline{toc}{chapter}{#1}
}

\long\def \mypart#1#2{
\part*{#1 \\* #2}
\addcontentsline{toc}{part}{#1\\ #2}
}

\begin{document}

\tableofcontents

\mypart{PART NUMBER 1}{Part Title}
\mychapter{Some chapter 1}
\lipsum[1-10]
\mychapter{Some chapter 2}
\lipsum[1-10]
\mychapter{Some chapter 3}
\lipsum[1-10]
\mypart{PART NUMBER 2}{Part Title}
\mychapter{Some chapter 4}
\lipsum[1-10]
\mychapter{Some chapter 5}
\lipsum[1-10]
\mychapter{Some chapter 6}
\lipsum[1-10]
\mychapter{Some chapter 7}
\lipsum[1-10]
\mypart{PART NUMBER 3}{Part Title}
\mychapter{Some chapter 8}
\lipsum[1-10]
\mychapter{Some chapter 9}
\lipsum[1-10]
\mychapter{Some chapter 10}
\lipsum[1-10]
\mychapter{Some chapter 11}
\lipsum[1-10]

\end{document}

它生成以下内容表:

目录页码不正确

\part此目录中的页码不正确。\part它们指向的不是打印文本的实际页面,而是该部分中第一章的开始页面。

我已经使用了pdflatex两次来确保页码正确,但事实并非如此。

问题

  1. \part为什么目录中的页码不正确?
  2. 如何才能在目录中完全隐藏页码\part,但保留目录条目\part不变?

答案1

你的方法错了。如果你不想给任何元素编号,只要告诉 LaTeX 就可以了。

\documentclass[final]{book}

\usepackage{lipsum}
\usepackage{tocloft}
\renewcommand{\cftchapleader}{\cftdotfill{\cftdotsep}}
\renewcommand{\cftchapfont}{\mdseries}
\renewcommand{\cftchappagefont}{\mdseries}

\setcounter{secnumdepth}{-2}

\newcommand\mypart[2]{\part{#1 \\ #2}}

\begin{document}

\tableofcontents

\mypart{PART NUMBER 1}{Part Title}
\chapter{Some chapter 1}
\lipsum[1-10]
\chapter{Some chapter 2}
\lipsum[1-10]
\chapter{Some chapter 3}
\lipsum[1-10]
\mypart{PART NUMBER 2}{Part Title}
\chapter{Some chapter 4}
\lipsum[1-10]
\chapter{Some chapter 5}
\lipsum[1-10]
\chapter{Some chapter 6}
\lipsum[1-10]
\chapter{Some chapter 7}
\lipsum[1-10]
\mypart{PART NUMBER 3}{Part Title}
\chapter{Some chapter 8}
\lipsum[1-10]
\chapter{Some chapter 9}
\lipsum[1-10]
\chapter{Some chapter 10}
\lipsum[1-10]
\chapter{Some chapter 11}
\lipsum[1-10]

\end{document}

LaTeX 将处理剩下的事情。

在此处输入图片描述

如果您想要隐藏部分的页码,请执行以下操作:

\documentclass[final]{book}

\usepackage{lipsum}
\usepackage{tocloft}
\renewcommand{\cftchapleader}{\cftdotfill{\cftdotsep}}
\renewcommand{\cftchapfont}{\mdseries}
\renewcommand{\cftchappagefont}{\mdseries}

% suppress page number in toc for parts
\cftpagenumbersoff{part}

\setcounter{secnumdepth}{-2}

\newcommand\mypart[2]{\part{#1 \\ #2}}

\begin{document}

\tableofcontents

\mypart{PART NUMBER 1}{Part Title}
\chapter{Some chapter 1}
\lipsum[1-10]
\chapter{Some chapter 2}
\lipsum[1-10]
\chapter{Some chapter 3}
\lipsum[1-10]
\mypart{PART NUMBER 2}{Part Title}
\chapter{Some chapter 4}
\lipsum[1-10]
\chapter{Some chapter 5}
\lipsum[1-10]
\chapter{Some chapter 6}
\lipsum[1-10]
\chapter{Some chapter 7}
\lipsum[1-10]
\mypart{PART NUMBER 3}{Part Title}
\chapter{Some chapter 8}
\lipsum[1-10]
\chapter{Some chapter 9}
\lipsum[1-10]
\chapter{Some chapter 10}
\lipsum[1-10]
\chapter{Some chapter 11}
\lipsum[1-10]

\end{document}

在此处输入图片描述

感谢 Mico 的建议\cftpagenumbersoff

答案2

这首先解决了错误的页码问题,但由于\mypart

\documentclass[final]{book}

\usepackage{lipsum}
\usepackage{tocloft}
\renewcommand{\cftchapleader}{\cftdotfill{\cftdotsep}}
\renewcommand{\cftchapfont}{\mdseries}
\renewcommand{\cftchappagefont}{\mdseries}

\long\def \mychapter#1{
\chapter*{#1}
\addcontentsline{toc}{chapter}{#1}
}


\long\def \mypart#1#2{%
\cleardoublepage
\addcontentsline{toc}{part}{#1\\ #2}
\part*{#1 \\* #2}

}

\begin{document}

\tableofcontents

\mypart{PART NUMBER 1}{Part Title}
\mychapter{Some chapter 1}
\lipsum[1-10]
\mychapter{Some chapter 2}
\lipsum[1-10]
\mychapter{Some chapter 3}
\lipsum[1-10]
\mypart{PART NUMBER 2}{Part Title}
\mychapter{Some chapter 4}
\lipsum[1-10]
\mychapter{Some chapter 5}
\lipsum[1-10]
\mychapter{Some chapter 6}
\lipsum[1-10]
\mychapter{Some chapter 7}
\lipsum[1-10]
\mypart{PART NUMBER 3}{Part Title}
\mychapter{Some chapter 8}
\lipsum[1-10]
\mychapter{Some chapter 9}
\lipsum[1-10]
\mychapter{Some chapter 10}
\lipsum[1-10]
\mychapter{Some chapter 11}
\lipsum[1-10]

\end{document}

在此处输入图片描述

编辑重新定义\mypart命令。

我采纳了 egreg 和 mico 的建议,并建议使用另一个\mypart删除第一个参数的命令。我这样做了不是希望我的回答被接受。

\documentclass[final]{book}

\usepackage{lipsum}
\usepackage{tocloft}
\usepackage{fmtcount}
\renewcommand{\cftchapleader}{\cftdotfill{\cftdotsep}}
\renewcommand{\cftchapfont}{\mdseries}
\renewcommand{\cftchappagefont}{\mdseries}

\cftpagenumbersoff{part} % According to Mico's suggestion

% 'Unhealthy' chapter redefinition 
\long\def \mychapter#1{
\chapter*{#1}
\addcontentsline{toc}{chapter}{#1}
}%

\setcounter{secnumdepth}{-2}%  % According to egreg's suggestion

% If literal number words should be used: apply this one 
\renewcommand{\thepart}{PART NUMBER~\NUMBERstring{part}}%
% If really numbers are desired:
%\renewcommand{\thepart}{PART NUMBER~\arabic{part}}

\newcommand{\mypart}[1]{%
\refstepcounter{part}% cheap trick ;-)
\part{\thepart~ \\* #1}
}%


\begin{document}

\tableofcontents


\mypart{Part Title}

\mychapter{Some chapter 1}
\lipsum[1-10]
\mychapter{Some chapter 2}
\lipsum[1-10]
\mychapter{Some chapter 3}
\lipsum[1-10]
\mypart{Part Title}
\mychapter{Some chapter 4}
\lipsum[1-10]
\mychapter{Some chapter 5}
\lipsum[1-10]
\mychapter{Some chapter 6}
\lipsum[1-10]
\mychapter{Some chapter 7}
\lipsum[1-10]
\mypart{Part Title}
\mychapter{Some chapter 8}
\lipsum[1-10]
\mychapter{Some chapter 9}
\lipsum[1-10]
\mychapter{Some chapter 10}
\lipsum[1-10]
\mychapter{Some chapter 11}
\lipsum[1-10]

\end{document}

在此处输入图片描述

相关内容