在包含目录的页面中添加一些文本

在包含目录的页面中添加一些文本

如何在包含的页面顶部的某处(中间以及距离目录开头一定距离,比如说上方 3 厘米处)添加一些文本Table of contents

类似于下面的图片。

\documentclass[12pt]{book}
\title{hello}
\begin{document}
\tableofcontents
\chapter{one}
\chapter{two}
\end{document}

在此处输入图片描述

答案1

通常,\tableofcontents使用\chapter*中的标题book,即标题格式化程序宏\@makeschapterhead必须稍加修改,并注入\mytextbeforetocheading要执行的“任意”命令。

为了将修改限制在此toc范围内(并且不影响任何进一步的修改\chapter*),所有修改都必须以组为单位进行。

\documentclass[12pt]{book}

\usepackage{xpatch}

\newcommand{\mytextbeforetocheading}{%
  \begingroup
  \centering%
  \Huge  \bfseries Some Text

  \endgroup
  \vskip3\baselineskip% 
}

\makeatletter
\xpatchcmd{\tableofcontents}{%
  \chapter%
}{%
  \begingroup
   \def\@makeschapterhead##1{%
    \vspace*{50\p@}%
    \mytextbeforetocheading%
    {\parindent \z@ \raggedright
      \normalfont
      \interlinepenalty\@M
      \Huge \bfseries  ##1\par\nobreak
      \vskip 40\p@
    }}
  \chapter%
}{\typeout{success}}{\typeout{failure}}
\xapptocmd{\tableofcontents}{\endgroup}{}{} % Close the group
\makeatother

\title{hello}
\begin{document}
\tableofcontents
\chapter{one}
\chapter{two}
\end{document}

在此处输入图片描述

答案2

我们可以利用这个事实,它\tableofcontents基本上是这样做的\chapter*{\contentsname},并且\chapter从发布开始\cleardoublepage(除非我们在双列文档中)。因此,我们确保在奇数页上,打开一个组并重新定义\clearpage(这被称为\cleardoublepage简单地结束我们打开的组)。

\documentclass[12pt]{book}

\begin{document}

% ensure we're on an odd page
\cleardoublepage
% open a group for doing local redefinitions
\begingroup
% a \clearpage will close the group and restore the meaning
\let\clearpage\endgroup

% here you type the text you want 
\begin{center}
Some text before the table of contents
\end{center}
% Now issue \tableofcontents

\tableofcontents
\chapter{one}
\chapter{two}
\end{document}

在此处输入图片描述

相关内容