我为章节和部分命令创建了两个自定义宏。当我使用以下代码时:
\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
两次来确保页码正确,但事实并非如此。
问题:
\part
为什么目录中的页码不正确?- 如何才能在目录中完全隐藏页码
\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}