我正在使用 LaTeX 撰写博士论文,现在面临以下问题。
在目录的每一页上,都必须打印标题。例如,在目录的第一页和连续的页面上,我希望打印以下内容:
**Chapter no Contents Page no**
图表目录和表格目录亦同。
我怎样才能实现这个目标?
答案1
以下最小示例使用以下规范创建report
一个\tableofcontents
tocloft
:
\documentclass{report}
\usepackage[paperheight=30\baselineskip]{geometry}% http://ctan.org/pkg/geometry
\usepackage{tocloft}% http://ctan.org/pkg/tocloft
\usepackage{atbegshi}% http://ctan.org/pkg/atbegshi
\makeatletter
\newcommand{\tocheader}{{%
\bfseries% Font selection
\hspace*{\cftchapindent}% Chapter indent
\makebox[\cftchapnumwidth][l]{Chapter no}% Chapter number heading
\hfill%
\contentsname% Title heading
\hfill%
\makebox[\@pnumwidth][r]{Page}% Page heading
\par\kern.5\baselineskip% After heading
}}
\AtBeginDocument{\renewcommand{\tableofcontents}{%
\begingroup%
\parindent\z@\parskip\cftparskip%
\tocheader%
\@starttoc{toc}%
\endgroup%
}}
\renewcommand{\cftaftertoctitle}{\par\kern.5\baselineskip\tocheader}
\newcommand{\AtBeginShipoutClear}{\gdef\AtBegShi@Hook{}}
\makeatother
\begin{document}
\AtBeginShipout{\tocheader}
\tableofcontents
\AtBeginShipoutClear
\chapter{abcd}\section{First}\section{Second}\section{Last}
\chapter{bcde}\section{First}\section{Second}\section{Last}
\chapter{cdef}\section{First}\section{Second}\section{Last}
\chapter{defg}\section{First}\section{Second}\section{Last}
\chapter{efgh}\section{First}\section{Second}\section{Last}
\chapter{fghi}\section{First}\section{Second}\section{Last}
\chapter{ghji}\section{First}\section{Second}\section{Last}
\chapter{hjik}\section{First}\section{Second}\section{Last}
\chapter{jikl}\section{First}\section{Second}\section{Last}
\chapter{iklm}\section{First}\section{Second}\section{Last}
\chapter{klmn}\section{First}\section{Second}\section{Last}
\chapter{lmno}\section{First}\section{Second}\section{Last}
\chapter{mnop}\section{First}\section{Second}\section{Last}
\chapter{nopq}\section{First}\section{Second}\section{Last}
\chapter{opqr}\section{First}\section{Second}\section{Last}
\chapter{pqrs}\section{First}\section{Second}\section{Last}
\chapter{qrst}\section{First}\section{Second}\section{Last}
\chapter{rstu}\section{First}\section{Second}\section{Last}
\chapter{stuv}\section{First}\section{Second}\section{Last}
\chapter{tuvw}\section{First}\section{Second}\section{Last}
\chapter{uvwx}\section{First}\section{Second}\section{Last}
\chapter{vwxy}\section{First}\section{Second}\section{Last}
\chapter{wxyz}\section{First}\section{Second}\section{Last}
\end{document}
\AtBeginShipout{\tocheader}
\tocheader
将(Chapter no...Contents...Page
构造)添加到每一页,而\AtBeginShipoutClear
将其从后续页面中删除。\tocheader
根据以下提供的间距构造其内容tocloft
:缩进\cftchapindent
,后跟章节号(宽度为\cftchapnumwidth
),居中标题和宽度为的页码\@pnumwidth
。也可以使用以下方式以稍微手动的方式执行此操作:afterpage
(看在目录中的页码上方添加“页面”)。
\listoffigures
对和 也可以执行相同的操作,尽管将其添加到未列出任何章节的目录中\listoftables
会很奇怪。Chapter no
答案2
以下是使用fancyhdr
包用于为 ToC 定义页面样式(可以为 LoF 和 LoT 定义类似的样式):
\documentclass{book}
\usepackage[paperwidth=15cm,paperheight=14cm]{geometry}% just for the example
\usepackage{fancyhdr}
% style for the ToC
\fancypagestyle{liststyle}
{
\fancyhf{}
\renewcommand\headrulewidth{0pt}
\fancyhead[L]{\bfseries Chapter No}
\fancyhead[C]{\bfseries\contentsname}
\fancyhead[R]{\bfseries Page No}
}
% style for regular pages
\fancypagestyle{regularstyle}
{
\fancyhf{}
\renewcommand\headrulewidth{0pt}
\fancyhead[L]{}
\fancyhead[C]{}
\fancyhead[R]{\thepage}
}
\makeatletter
\renewcommand\tableofcontents{%
\if@twocolumn
\@restonecoltrue\onecolumn
\else
\@restonecolfalse
\fi
\pagestyle{liststyle}
\@starttoc{toc}%
\if@restonecol\twocolumn\fi
}
\makeatother
\begin{document}
\tableofcontents
\clearpage
\pagestyle{regularstyle}
\chapter{Test}\section{Test}\section{Test}
\chapter{Test}\section{Test}\section{Test}
\chapter{Test}\section{Test}\section{Test}
\chapter{Test}\section{Test}\section{Test}
\chapter{Test}\section{Test}\section{Test}
\chapter{Test}\section{Test}\section{Test}
\chapter{Test}\section{Test}\section{Test}
\chapter{Test}\section{Test}\section{Test}
\chapter{Test}\section{Test}\section{Test}
\chapter{Test}\section{Test}\section{Test}
\chapter{Test}\section{Test}\section{Test}
\chapter{Test}\section{Test}\section{Test}
\chapter{Test}\section{Test}\section{Test}
\chapter{Test}\section{Test}\section{Test}
\chapter{Test}\section{Test}\section{Test}
\end{document}
包装中paperwidth
所选择的尺寸仅仅是为了示例中的方便,与解决方案无关。paperheight
geometry