我正在使用book
类,并且想通过以下方式在 TOC 中创建一个部分:
我希望该部分位于页面的中间,而章节位于另一页。
这是我的代码:
\documentclass[12pt]{book}
\makeatletter
\def\@part[#1]#2{%
\ifnum \c@secnumdepth >-2\relax
\refstepcounter{part}%
\addcontentsline{toc}{part}{\protect\numberline{\thepart}#1}
\else
\addcontentsline{toc}{part}{#1}%
\fi
\markboth{}{}%
{\centering
\interlinepenalty \@M
\normalfont
\ifnum \c@secnumdepth >-2\relax
\huge\bfseries \partname\nobreakspace\thepart
\par
\vskip 20\p@
\fi
\Huge \bfseries #2\par}%
\@endpart}
\renewcommand\l@part[2]{%
\thispagestyle{empty}
\newpage
\vspace*{\fill}
\begin{center}
\def\numberline##1{%
\Large Part~ ##1\newline
}
{\Huge #1}
\end{center}
\vspace*{\fill}
\newpage
}
\makeatother
\begin{document}
\tableofcontents
\part{one}
\chapter{one \\ two}
\chapter{two}
\chapter{three\\three\\three\\three\\three}
\chapter{four}
\part{two}
\chapter{five}
\chapter{six}
\chapter{seven}
\chapter{six}
\chapter{seven}
\chapter{six}
\chapter{seven}
\end{document}
我已经将该部分放在单独的页面中,但我不知道为什么我无法更改目录的字体大小(即,为什么\Large
在\Huge
中不起作用\l@part
)并且我也无法将空白页放在此上面(即,为什么\thispagestyle{empty}
在中不起作用\l@part
)。
答案1
请注意,在重新定义 时使用了两组括号\numberline
。第二组括号使之成为\Large
本地括号。
另外,我不确定是否\newline
是故意使用的。
\documentclass[12pt]{book}
\makeatletter
\def\@part[#1]#2{%
\ifnum \c@secnumdepth >-2\relax
\refstepcounter{part}%
\addcontentsline{toc}{part}{\protect\numberline{\thepart}#1}
\else
\addcontentsline{toc}{part}{#1}%
\fi
\markboth{}{}%
{\centering
\interlinepenalty \@M
\normalfont
\ifnum \c@secnumdepth >-2\relax
\huge\bfseries \partname\nobreakspace\thepart
\par
\vskip 20\p@
\fi
\Huge \bfseries #2\par}%
\@endpart}
\renewcommand\l@part[2]{%
\newpage
\thispagestyle{empty}
\vspace*{\fill}
\begin{center}
\def\numberline##1{{\Large Part~ ##1\\}}%
{\Huge #1}
\end{center}
\vspace*{\fill}
\newpage
}
\makeatother
\begin{document}
\tableofcontents
\part{one}
\chapter{one \\ two}
\chapter{two}
\chapter{three\\three\\three\\three\\three}
\chapter{four}
\part{two}
\chapter{five}
\chapter{six}
\chapter{seven}
\chapter{six}
\chapter{seven}
\chapter{six}
\chapter{seven}
\end{document}